2

我想知道在 JSF 1.2 中实现自定义验证器的正确方法是什么。在我的验证器类中'

public void validate(FacesContext context, UIComponent component,Object value) throws   ValidatorException {}

方法,我正在做验证检查,只是在出现无效条件的情况下将FacesMessage实例添加到上下文中。context.addMessage(new FacesMessage(xxx...);这似乎在我的应用程序中运行良好。但是,我不确定是否还需要明确地throw new ValidatorException()让 JSF 正确处理生命周期?或者 JSF 是否足够聪明,可以在上下文中查看错误消息来管理生命周期?

4

1 回答 1

2

你确实应该扔一个ValidatorException. 否则 JSF 仍将继续处理请求并更新模型值并调用操作方法。你不想拥有它。

不要手动添加FacesMessage. 用它构建ValidatorException,JSF 将自动将消息添加到正确的组件,然后 JSF 将正确跳过更新模型值调用操作阶段。

if (!valid) {
    FacesMessage message = new FacesMessage(SEVERITY_ERROR, "Invalid", null);
    throw new ValidatorException(message);
}
于 2012-04-27T16:22:04.963 回答