【问题标题】:How to prevent the form Submission in JSF until a panel has completed the rendering?在面板完成渲染之前,如何防止 JSF 中的表单提交?
【发布时间】:2012-07-20 04:18:27
【问题描述】:

在我的应用程序中,我有一个 SelecOneMenu,其中显示了如下所示的一些项目..

<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>

还有一个“下一步”按钮,可将用户带到下一页。

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

【问题讨论】:

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

标签: jsf-2


【解决方案1】:

JQuery Validate plugin 将是您的最佳选择。

【讨论】:

    【解决方案2】:

    你能做的几件事是

    1. 显示正在加载...图像,以便用户知道正在发生的事情。
    2. 您可以使用 jQuery Block Ui 插件以及正在加载...图像。
    3. Javascript 验证我怀疑是否会起作用,因为 html 元素在选择后不会立即出现,直到视图更新,在此窗口中用户可以单击下一步,您可以检查 html 元素的存在和您的 js 验证,或者您可以进行服务器端验证。

    希望这会有所帮助.....

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-18
      • 1970-01-01
      • 1970-01-01
      • 2019-12-31
      • 2017-02-08
      • 2010-12-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多