【问题标题】:JSF lifcycle : Skip Validation and update modelJSF 生命周期:跳过验证和更新模型
【发布时间】:2012-08-28 15:31:30
【问题描述】:

我有一个包含很多字段的表单。 我需要知道是否有错误。 但用户可以根据需要保存有错误的数据。

我使用 JSF,我问我是否有一种简单的方法可以跳过验证。 有关信息,包含所有字段的表单都包装在一个组合中。

【问题讨论】:

    标签: jsf-2


    【解决方案1】:

    您可以通过向 h:commandButtonh:commandLink 添加属性 immediate="true" 来跳过验证。

    <h:form>
    <h:inputText value="#{someBean.input}"/>
    //other input fields
    <h:commandButton action="#{someBean.invoke}" value="Go" immediate="true"/>
    </h:form>
    

    在这种情况下,即使存在验证错误也会发生导航。

    【讨论】:

    • 是的,但我需要更新我的模型并出现错误,并且使用 immediate="true",跳过更新模型阶段。
    【解决方案2】:

    您可以编写一个验证器(不是 jsf 验证器),它会验证数据并将错误添加到 faces 消息中,在 action 方法中调用此验证器。

    我想这会实现你的目标,但 JSF 自己的验证器使用不会有帮助。

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

    【讨论】:

      【解决方案3】:

      最后,我完成了RequiredValidator(和其他)的重载,并为每个按钮[Save with error] 和[Save] 传递了一个参数。如果单击带有错误的保存按钮,则我的自定义验证器将跳过验证。转换错误可能是一个问题。所以我的 managedBean 中的所有字段都是字符串。 如果我期望一个整数,我也会为此编写一个自定义验证器。

      有点重,但很管用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-06-13
        • 2013-04-15
        • 2019-02-12
        • 1970-01-01
        • 1970-01-01
        • 2014-06-09
        • 2019-03-06
        相关资源
        最近更新 更多