我想知道在JSF 1.2中实现自定义Validator的正确方法是什么。在我的Validator类'
中public void validate(FacesContext context, UIComponent component,Object value) throws ValidatorException {}
方法,我正在进行验证检查,只是在FacesMessage
条件无效的情况下将context.addMessage(new FacesMessage(xxx...);
实例添加到上下文中。这似乎在我的应用程序中正常工作。但是,我不确定我是否还需要明确地throw new ValidatorException()
让JSF正确处理生命周期?或者JSF是否足够聪明,可以查看上下文中的错误消息来管理生命周期?
答案 0 :(得分:2)
你应该扔ValidatorException
。否则,JSF仍将继续处理请求并更新模型值并调用操作方法。你不想拥有它。
请勿手动添加FacesMessage
。使用它构造ValidatorException
,然后JSF会自动将消息添加到正确的组件中,然后JSF将正确跳过更新模型值和调用操作阶段。
if (!valid) {
FacesMessage message = new FacesMessage(SEVERITY_ERROR, "Invalid", null);
throw new ValidatorException(message);
}