繁体   English   中英

跳到下一个 <p:wizard> 没有验证的标签

[英]Skip to next <p:wizard> tab without validation

我正在使用<p:wizard>和几个选项卡。 一些选项卡包含需要验证的输入,例如信用卡号。 但是可以跳过整个选项卡。 如何跳到下一个标签页?

我正在考虑2种实现方式,但不确定如何:

  1. 添加一个跳过按钮,该按钮将转到下一个选项卡,而无需验证当前按钮。

     <p:commandButton process="@this" immediate="true" onclick="wiz.next();" value="#{msgs['action.skip']}"></p:commandButton> 

巫师。

<p:wizard widgetVar="wiz" flowListener="#{accountActivationController.onFlowProcess}" nextLabel="#{msgs['action.next']}" backLabel="#{msgs['action.back']}">
    <p:tab id="tabProfile">     
            //...
    </p:tab>
    <p:tab id="tabAddress">     
        <p:panel>
            <p:inputText id="shippingZipCode_OTHERS" value="#{accountActivationController.shippingAddress.postCode}">
            </p:inputText>
            <p:message for="shippingZipCode_OTHERS" />      
            <p:messages id="globalAddress" showDetail="true">
            </p:messages>
            <f:facet name="footer">
                <div class="buttons-set">
                    <p:commandButton process="@this" value="#{msgs['action.skip']}" oncomplete="wiz.next();">
                    </p:commandButton>
                </div>
            </f:facet>
        </p:panel>
    </p:tab>
    <p:tab id="tabSchool">  
            //....  
            <p:commandButton action="#{bean.submit} value="Submit" />
    </p:tab>
</p:wizard>

似乎process在此部分中不起作用。 p:commandButton上的onclick,oncomplete不会更改任何内容。

目标是当按下“跳过”按钮时,不应触发表单验证,但是我仍在尝试找出方法。

  1. 添加复选框“跳过”,这将禁用该特定选项卡上的验证。

经过几个小时的测试,我证实了kolossus所说的是真的。 primefaces向导不支持组件的选择性处理,它始终会验证特定选项卡上的所有字段。

就我而言,我只检查必填字段,所以我所做的是删除了所有必填字段验证器,因此,当我单击“跳过”按钮时,它应该导航到下一个选项卡。 当我单击“下一步”按钮时,在onFlowListener事件内部手动验证所有必填字段。

像这样:

public String onFlowProcess(FlowEvent event) {
    if (event.getOldStep().equals("tabAddress")) {
        if (skipToNext) {
            skipToNext = false; 
            return event.getNewStep();
        }
        if (StringUtils.isBlank(shippingAddress.getCountryCode())
                || StringUtils.isBlank(shippingAddress.getPostCode())
                || StringUtils.isBlank(shippingAddress.getState())
                || StringUtils.isBlank(shippingAddress.getAddress1())) {            
            facesContext.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, null, "ERROR Address")));
            return event.getOldStep();
        }       
    }
}

客户端API:

移至“ n”标签

onclick="PF('wiz').loadStep (PF('wiz').cfg.steps [n], true);  "

从0到m以及n> o和n <mm =制表符数

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM