Java Primefaces向导。如何返回onnext的js函数选项卡

Java Primefaces向导。如何返回onnext的js函数选项卡,java,jsf,jsf-2,primefaces,wizard,Java,Jsf,Jsf 2,Primefaces,Wizard,我使用PrimeFaces3.5。并尝试在的onnext处理程序中调用js函数。 我希望在当前选项卡的验证结果之后,在特定选项卡的选项卡上返回onnext。我的验证函数 function validateManageOtherTournaments(wizard, validationTab, lang) { var currentTabId = validationTab; if (currentTabId != 'com

我使用PrimeFaces3.5。并尝试在
的onnext处理程序中调用js函数。 我希望在当前选项卡的验证结果之后,在特定选项卡的选项卡上返回onnext。我的验证函数

    function validateManageOtherTournaments(wizard, validationTab, lang) {
                var currentTabId = validationTab;
                if (currentTabId != 'competitionId') {
                    return wizard.next();
                }

                var seasonVal = document.getElementById('manageTournament:name_season_input').value;
                var dateFromVal = document.getElementById('manageTournament:dateFrom_input').value;
                var dateToVal = document.getElementById('manageTournament:dateTo_input').value;
                /*var compNameVal = document.getElementById('manageTournament:title_input').value;*/

                var isValidName = validateFieldsInOtherTournament('manageTournament', ['title'], lang);
                if (isValidName) {
                    if (validRuContentT) {
                        var filledBothDate = (dateFromVal != "" && dateToVal != "");
                        var isEmptySeason = ("" != String(seasonVal));
                        if ( filledBothDate || isEmptySeason) {
                            return wizard.next();
                        }
                    }
                }
                return "competitionId"; // currentTab
            } 
我使用代码。但它仍然不起作用(

//已更新

I try to do something like this

 function validateManageOtherTournaments(wizard, validationTab, lang) {
                /*var wizardElement = document.getElementById('wiz');*/

                var currentTabId = validationTab;
                if (currentTabId != 'competitionId') {
                    var currentStepIndex = wizard.getStepIndex(wizard.getState().currentStep),
                            stepIndexToGo = currentStepIndex + 1;
                    var stepIdToGo = wizard.cfg.steps[stepIndexToGo];
                    return wizard.loadStep(stepIdToGo, stepIndexToGo, false);        // next
                }

                var seasonVal = document.getElementById('manageTournament:name_season_input').value;
                var dateFromVal = document.getElementById('manageTournament:dateFrom_input').value;
                var dateToVal = document.getElementById('manageTournament:dateTo_input').value;
                /*var compNameVal = document.getElementById('manageTournament:title_input').value;*/

                var isValidName = validateFieldsInOtherTournament('manageTournament', ['title'], lang);
                if (isValidName) {
                    if (validRuContentT) {
                        var filledBothDate = (dateFromVal != "" && dateToVal != "");
                        var isEmptySeason = ("" != String(seasonVal));
                        if ( filledBothDate || isEmptySeason) {
                            var currentStepIndex = wizard.getStepIndex(wizard.getState().currentStep),
                                    stepIndexToGo = currentStepIndex + 1;
                            var stepIdToGo = wizard.cfg.steps[stepIndexToGo];
                            return wizard.loadStep(stepIdToGo, stepIndexToGo, false);         // next
                        }
                    }
                }
                var currentStepIndex = wizard.getStepIndex(this.getState().currentStep),
                stepIndexToGo = currentStepIndex;
                var stepIdToGo = wizard.cfg.steps[stepIndexToGo];
                return wizard.loadStep(stepIdToGo, stepIndexToGo, false);     //competitionId
            }

如何在向导的下一个函数选项卡中返回?

我做了如下操作:

public String onFlowProcess(FlowEvent event)
{
  if (!event.getOldStep().equals("competitionId"))
  {
    return event.getNewStep();
  }
  if (validationPassed())
  {
    return event.getNewStep();
  }
  else
  {
    return event.getOldStep();
  }
}

private boolean validationPassed()
{
  // do your validation here.
  // return true if validation passed
}

然后在我的向导中:
flowListener=“#{myBean.onFlowProcess}”

无法真正理解您的问题。是否要从
onnext
回调导航到特定选项卡?@kolossus是的,我需要验证字段,如果结果正确,则导航到下一个选项卡在其他情况下保持在当前选项卡上是否有任何特殊原因不希望在支持bean中执行此验证?这不正确要求将向导绑定到bean(在您的代码中,向导仅用于获取当前选项卡)。很可能您需要使用@ViewScope bean。我做了类似的@KidTempo操作,但当验证失败并返回event.getOldStep()时,但“下一步”按钮消失了。你知道可能会发生什么吗?