我正在使用<p:wizard>
几个标签。某些选项卡包含需要验证的输入,例如信用卡号。但是可以跳过整个选项卡。如何跳到下一个标签?
我正在考虑2个实现,但我不确定如何:
添加一个跳过按钮,该按钮将转到下一个标签而不验证当前。
<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
似乎不适用于此部分。 onclick,oncomplete on p:commandButton不会改变任何内容。
目标是当按下跳过按钮时,不应触发表单验证,但我仍在尝试弄清楚如何执行此操作。
答案 0 :(得分:1)
经过几个小时的测试,我已经证实了kolossus所说的是真的。 primefaces向导不支持选择性处理组件,它总是验证特定选项卡上的所有字段。
在我的情况下,我只检查必填字段,所以我所做的是删除所有必需的字段验证器,因此当我单击“跳过”按钮时,它应该导航到下一个选项卡。当我单击Next按钮时,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();
}
}
}
答案 1 :(得分:-1)
客户端API:
转移到&#34; n&#34;标签
onclick="PF('wiz').loadStep (PF('wiz').cfg.steps [n], true); "
从0到m且n> o和n&lt;米 m =标签数量