如果发生 jsf 验证错误,是否可以执行一些操作(一些清理)?
字段使用 xhtml 中的标签进行验证,例如 'required="true"'、'f:validateRegex pattern="\d*"'、'f:validator validatorId="someValidator"'。
我需要将托管 bean 的一些属性字段设置为 null(当页面上出现任何故障时)。但是如果验证失败,那么 JSF 会进入渲染响应阶段并且不会调用托管 bean 方法。在这种情况下,也不会调用侦听器(使用 f:actionListener 标记)。
现在我正在考虑通过使用 @AssertTrue、@Size 等 bean 注释进行验证来替换 xhtml 验证。然后在某些验证方法中,可以进行清理:
@ManagedBean
class SomeBean {
...
@AssertTrue
public void isClenup() {
cleanup();
}
...
}
但这对我来说似乎不是一个好的解决方案。
我还注意到几个用 @AssertTrue 注释的方法以未定义的顺序调用。因此,从 xhtml 验证切换到 bean 注释验证变得不那么容易了。
是否可以定义一些使用@AssertTrue 注释的调用方法的顺序?