如何在验证后保持状态? (validateWholeBean)

时间:2018-03-14 03:34:19

标签: jsf bean-validation jsf-2.3

我正在使用<f:validateWholeBean>标记(JSF 2.3)进行类级验证。

验证正确进行,但是在返回带有验证错误的消息后,表单数据将被删除。

从我意识到这是默认行为,但我想知道是否可以做不同的事情,我希望数据在恢复视图阶段后保留在表单中。我希望用户看到输入错误的信息。

1 个答案:

答案 0 :(得分:0)

我能够通过将<o: validateBean value =" # {bean.product} "/> omnifaces标记与method属性结合使用来解决我的问题。 validateActual&#34;。报告的行为在文档中是不利的,对我来说是理想的。

  

如果由于技术限制而无法实现复制策略,则可以将方法属性设置为&#34; validateActual&#34;。

<o:validateBean value="#{bean.product}" validationGroups="com.example.MyGroup" method="validateActual" />

  

这将更新模型值并在更新模型值阶段而不是验证阶段后运行验证。缺点是无效值保留在模型中,并且无论如何都调用了action方法。您需要在action方法中对FacesContext.isValidationFailed()进行额外检查,以查看它是否已失败。

http://showcase.omnifaces.org/validators/validateBean