有没有办法避免JSF捕获Bean验证方法中引发的异常并像处理其他Bean方法中引发的异常一样处理它们?

时间:2012-03-16 10:25:49

标签: jsf exception-handling jsf-1.2

在JSF项目中,我正在使用Beans抛出的异常通常由JSF将用户重定向到错误页面来处理,但是当它们在Bean验证方法中引发时,JSF会在相对{{1}中处理它们。而是标记异常消息。

我希望验证方法中引发的异常可以像Beans提出的其他异常一样处理。有没有办法实现这个目标?

我正在使用的验证类型是通过backing-bean验证器方法,例如在JSF页面中:

<h:message>

,在支持bean代码中:

<h:inputText value="#{Bean.field}" validator="#{Bean.validate}" />

谢谢,Andrea

1 个答案:

答案 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>