Jsf 2 在面板完成呈现之前,如何防止JSF中的表单提交?

Jsf 2 在面板完成呈现之前,如何防止JSF中的表单提交?,jsf-2,Jsf 2,在我的应用程序中,我有一个Selecomenu,它显示了如下一些项目 <h:selectOneMenu id="cmbInput" value="#{myBean.val}" required="true" requiredMessage="Some Message"> <f:selectItem itemLabel="Please select" noSelectionOption="true" /> <f:sele

在我的应用程序中,我有一个Selecomenu,它显示了如下一些项目

<h:selectOneMenu id="cmbInput" value="#{myBean.val}" required="true" requiredMessage="Some Message">
            <f:selectItem itemLabel="Please select" noSelectionOption="true" />
            <f:selectItems value="#{myBean.items}" />
            <f:ajax event="valueChange" render="myPanel"/>
            <f:ajax listener="#{myBean.myListener}"/>            
</h:selectOneMenu>
<h:panelGroup id="myPanel" rendered="#{myBean.someFlag}">
   <h:inputText id="input1" value="#{myBean.someVal}" required="true">
</h:panelGroup>

基本上,每当用户选择一个项目,它都会呈现一个面板,面板下面有一些输入字段,如下所示

<h:selectOneMenu id="cmbInput" value="#{myBean.val}" required="true" requiredMessage="Some Message">
            <f:selectItem itemLabel="Please select" noSelectionOption="true" />
            <f:selectItems value="#{myBean.items}" />
            <f:ajax event="valueChange" render="myPanel"/>
            <f:ajax listener="#{myBean.myListener}"/>            
</h:selectOneMenu>
<h:panelGroup id="myPanel" rendered="#{myBean.someFlag}">
   <h:inputText id="input1" value="#{myBean.someVal}" required="true">
</h:panelGroup>

还有一个“下一步”按钮,可以让用户进入下一页


我面临的问题是,每当用户从下拉列表中选择某个内容并在呈现面板之前单击“下一步”按钮时,都会将用户带到下一页。但我想阻止它,因为面板包含需要输入的字段,所以在本例中,我想在单击“下一步”时抛出验证错误

对你来说是最好的选择。

你能做的事情很少是

  • 显示加载。。。图像,以便用户知道正在发生的事情
  • 您可以在加载的同时使用jQuery块Ui插件。。。形象
  • 我怀疑Javascript验证会起作用,因为在视图更新之前,html元素不会在做出选择后立即出现,在此窗口中,用户可以单击“下一步”,您可以检查html元素的存在和js验证,或者您可以进行服务器端验证

  • 希望这有帮助……

    如果您可以在项目中使用primefaces,请查看ajax状态组件