Java textfield验证期间选项卡之间的jsf导航
我是JSF新手,遇到了一个奇怪的问题,不知道如何解决它 我在一个屏幕上有多个选项卡,其中一个选项卡上有文本字段、下拉列表等。 所有文本字段和下拉列表都设置了required=“true” 由于此验证,当我尝试在未输入或选择值的情况下导航到另一个选项卡时,我无法导航,它会显示验证消息(值是必需的) 但我在选项卡中有一个保存按钮,只有在我单击保存按钮时才会触发验证,而不是在选项卡切换/导航期间。在单击“保存”按钮进行验证之间,我只希望切换到其他选项卡时不会触发验证 此验证不允许我切换到不同的选项卡,也不允许 确定切换选项卡时触发此验证的原因 谁能为我的问题提出一个解决方案Java textfield验证期间选项卡之间的jsf导航,java,jsp,jsf,Java,Jsp,Jsf,我是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>
它仍然会调用验证。如果您想在没有验证过程的情况下切换/导航,则必须在操作组件中使用
immediate=“true”
比方说,你有如下几点
<h:commandButton value="Save" />
<h:commandButton value="NextPage" immediate="true"/>
如果单击NextPage
按钮,将执行
的验证过程。你可能有个问题,为什么他们会这样?
答案是你必须学习。使用
对不起,我在一家公司工作,无法发布代码,但我可以保证,当我从文本字段和下拉列表中删除required=“true”时,我能够导航到其他选项卡。也许我可以尝试用一个简单的代码来复制这个问题。感谢您表现出兴趣。谢谢,我不确定是否理解了所有内容,但我已将您建议中的更改粘贴到代码中,但如果不在文本字段中输入值或从下拉列表中选择值,我仍然无法导航到另一个选项卡。您不应该添加immediate=“true”
完全不支持输入组件。另请参阅答案的“注释”。@BalusC,老实说,我一直在寻找你来拯救我,我已经看到了你的许多帖子,谢谢。很抱歉,这是我的输入组件中的内容。从输入中删除immediate=“true”
。否则,当按下带有immediate=“true”
的按钮时,它们也会被处理。它不工作,这是我的命令按钮
<h:inputText id="name" value="#{...}" immediate="true" required="true">
<h:commandButton value="Save" />
<h:commandButton value="NextPage" immediate="true"/>