Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java textfield验证期间选项卡之间的jsf导航_Java_Jsp_Jsf - Fatal编程技术网

Java textfield验证期间选项卡之间的jsf导航

Java textfield验证期间选项卡之间的jsf导航,java,jsp,jsf,Java,Jsp,Jsf,我是JSF新手,遇到了一个奇怪的问题,不知道如何解决它 我在一个屏幕上有多个选项卡,其中一个选项卡上有文本字段、下拉列表等。 所有文本字段和下拉列表都设置了required=“true” 由于此验证,当我尝试在未输入或选择值的情况下导航到另一个选项卡时,我无法导航,它会显示验证消息(值是必需的) 但我在选项卡中有一个保存按钮,只有在我单击保存按钮时才会触发验证,而不是在选项卡切换/导航期间。在单击“保存”按钮进行验证之间,我只希望切换到其他选项卡时不会触发验证 此验证不允许我切换到不同的选项卡,

我是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"/>