我决定在这个组件上使用向导 component.link
我有条件,我应该使用按钮而不是复选框"跳到最后"。如果我按下此按钮没关系,但是当我转到倒数第二个选项卡时,我想生成确认选项卡的内容,
public void generatePreview() {
for (CompetitionTypeBean competitionType : competitionTypeList) {
if (competitionType.getId().equals(competitionTypeId)) {
tournamentBean.setCompetitionTypeBean(competitionType);
}
}
if (teamList != null && !teamList.isEmpty()) {
List<TeamBean> teams = new ArrayList<TeamBean>();
for (TeamBean team : teamList) {
for (Long teamId : teamListSelected)
if (team.getId().equals(teamId)) {
teams.add(team);
break;
}
}
tournamentBean.setTeams(teams);
}
}
这意味着我应该设置skip in true
,我决定编写 js 函数,will work on onnext event of wizard
<script type="text/javascript">
function setHiddenValue(formId, componentId, new_value) {
var tabId = 'competitionId';
if (tabId != 'predLast') {
document.getElementsByName('wiz').next();
} else {
var fullComponentId = formId + ":" + componentId;
document.getElementById(fullComponentId).value = new_value;
}
}
</script>
在那里我发现了新问题
首先我不知道,因为我可以获得当前的选项卡ID。其次,我不知道如何在帮助js为向导document.getElementsByName('wiz').next();
制作下一个事件。我尝试查看生成的 html 代码。每个选项卡都是<li>
的,当以 css 样式选择此选项卡时,li 添加"ui-state-hightlight"
也许我尝试开发周期。但是我找不到其他解决方案。
-
要在 javascript 中获取当前步骤的索引,请使用
getStepIndex()
函数。要获取后备 Bean 中当前步骤的名称,您需要在视图中获取对向导的引用,并调用getStep()
(返回下一个选项卡的id
属性)或getStepToProcess()
(返回实际的下一个Tab
对象,您可以从中获取当前选项卡的名称)。 -
<p:wizard/>
具有onnext
和onback
事件回调,您可以挂接到这些回调来处理 javascript(或使用<p:remoteCommand/>
支持 Bean 代码)
我只是在处理程序中添加下一行
public String onFlowProcess(FlowEvent event) throws Exception {
if ((skip == true)) {
skip = false; //reset in case user goes back
generatePreview();
return CONFIRM_TAB_ID;
} else {
String newTab = event.getNewStep();
if (CONFIRM_TAB_ID.equals(newTab)) {
generatePreview();
}
return newTab;
}
}
我认为使用常量CONFIRM_TAB_ID这是正常的,因为我从未决定更改此 tabId。