【问题标题】:Check for validation errors in part of a form in JSF在 JSF 中检查部分表单中的验证错误
【发布时间】:2011-10-10 04:37:12
【问题描述】:

我正在构建一个 Seam 应用程序,它基本上是一个巨大的表单,分为不同的部分或模块。我需要一种方法来确定模块何时“完成”,这意味着该模块中字段的所有验证都通过了。然后我需要在视图中做一些事情,设置一个 CSS 类或其他什么。

类似:

<a:region id="region1">
    <s:div styleClass="#{invalid ? 'errors' : ''}">
       <h:inputText required="true" id="input1" />
       <h:inputText required="true" id="input2" />
       <h:commandButton value="Save this section" reRender="region1" />
    </s:div>
</a:region>

我想我有两个选择:

  • 使用某种视图逻辑(例如 #{invalid} 用于单个字段)
  • 使用 bean 中的方法,我以编程方式获取模块的所有组件,并检查它们是否存在验证错误。

但是,我找不到任何方法来完成其中任何一个。如果这是可能的,有什么想法吗?

我们将 JSF 1.2 与 Seam 结合使用。

谢谢。

【问题讨论】:

    标签: jsf seam facelets


    【解决方案1】:

    您可以使用UIInput#isValid() 检查特定输入组件是否发生验证错误。

    <s:div styleClass="#{!input1.valid or !input2.valid ? 'errors' : ''}">
       <h:inputText binding="#{input1}" required="true" id="input1" />
       <h:inputText binding="#{input2}" required="true" id="input2" />
       <h:commandButton value="Save this section" reRender="region1" />
    </s:div>
    

    【讨论】:

    • 很好,这行得通!但是,我也尝试将组件绑定到 bean 中的属性,但这样做时会收到 NullpointerException。你知道吗?我认为这就像使用 binding="#{myBean.input1}" 然后在 bean 中声明 UIInput-property 一样简单..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-20
    • 2019-11-09
    • 2012-08-30
    相关资源
    最近更新 更多