在JSF项目中,我正在使用Beans抛出的异常通常由JSF将用户重定向到错误页面来处理,但是当它们在Bean验证方法中引发时,JSF会在相对{{1}中处理它们。而是标记异常消息。
我希望验证方法中引发的异常可以像Beans提出的其他异常一样处理。有没有办法实现这个目标?
我正在使用的验证类型是通过backing-bean验证器方法,例如在JSF页面中:
<h:message>
,在支持bean代码中:
<h:inputText value="#{Bean.field}" validator="#{Bean.validate}" />
谢谢,Andrea
答案 0 :(得分:1)
这是“按设计”。
将该验证器转换为实现Validator
的完整类。抛出ValidatorException
以外的任何异常都将导致HTTP 500错误页面。
E.g。
public class MyValidator implements Validator {
public void validate(FacesContext context, UIComponent component, Object value) {
// validation logic here
}
}
您在<validator>
faces-config.xml
<validator>
<validator-id>myValidator</validator-id>
<validator-class>com.example.MyValidator</validator-class>
</validator>
并在输入中使用如下
<h:inputText ... validator="myValidator" />
或
<h:inputText ...>
<f:validator validatorId="myValidator" />
</h:inputText>