我对 JSF 很陌生,遇到了一个奇怪的问题,不知道如何解决。
我在一个屏幕中有多个选项卡,在一个选项卡中我有文本字段、下拉列表等。所有文本字段和下拉列表都设置了required="true"。
由于此验证,当我尝试导航到另一个选项卡而不输入或选择值时,我无法导航并显示验证消息(需要值)。
但是我在选项卡中有一个保存按钮,验证应该仅在我单击保存按钮时触发,而不是在选项卡切换/导航期间触发。在我单击保存按钮时的验证工作之间,我想要的只是当我切换到不同的选项卡时不应该触发验证。
此验证不允许我切换到不同的选项卡,并且不确定为什么在切换选项卡时会触发此验证。
任何人都可以为我的问题提出一个解决方案。
更新:这是我根据 CycDemo 的回答所做的更改:
<h:tab name="First Tab" accessKey="s">
<h:panelGroup >
<h:dataTable id="firstTable" styleClass="dataTableEx" headerClass="headerClass"
footerClass="footerClass" rowClasses="rowClass1,rowClass2"
columnClasses="columnClass1" value="#{clientProductCRUDBean.model}"
var="item" border="1" cellpadding="2" cellspacing="0" >
<!-- this for the incoming originator type dropdown field -->
<h:column>
<f:facet name="header">
<h:outputText value="firstDropDown" />
</f:facet>
<h:selectOneMenu id="firstDropDown"
required="true" requiredMessage="required field" immediate="true" >
<f:selectItem itemLabel="--Select--" itemValue="#{null}" />
<h:message for="firstDropDown" errorClass="generalErrorText"/>
</h:selectOneMenu>
</h:column>
<!-- this for the outgoing originator text field -->
<h:column >
<f:facet name="header">
<h:outputText value="firstTextField"/>
</f:facet>
<h:inputText id="firstTextField"
required="true" validatorMessage="Max Length 20" requiredMessage="required field" immediate="true" >
<f:validateLength maximum="20"/>
<h:message for="firstTextField" errorClass="generalErrorText"/>
</h:inputText>
</h:column>
<!-- this for the replace or randomise radio buttons text field -->
<!-- this for the operators selection drop down-->
</h:dataTable>
</h:panelGroup>
<h:panelGroup style="padding: 1px; margin-top: 5px;" >
<h:commandButton id="firstSaveButton" styleClass="commandButton" value="Save" />
<h:commandButton id="firstSaveCancel" styleClass="commandButton" value="Cancel" immediate="true"/>
</h:panelGroup>
<br />
</h:tab>
它仍然调用验证。