我想知道什么是实现在JSF 1.2自定义验证的正确方法。 在我的Validator类
public void validate(FacesContext context, UIComponent component,Object value) throws ValidatorException {}
方法,我做了验证检查和刚刚加入FacesMessage
实例由上下文context.addMessage(new FacesMessage(xxx...);
在无效状态的情况下这似乎在我的应用程序工作正常不过我。我不知道我是否还需要明确地throw new ValidatorException()
用于JSF正确处理生命周期?还是将JSF足够聪明,看上下文中的错误信息管理生命周期?
你确实应该扔ValidatorException
。 否则,JSF还是会继续处理请求,更新模型值及调用操作方法。 你不想拥有它。
不要手动添加FacesMessage
。 构建ValidatorException
它和JSF然后将信息自动添加到正确的组件,然后JSF将正确跳过更新模型值及调用操作阶段。
if (!valid) {
FacesMessage message = new FacesMessage(SEVERITY_ERROR, "Invalid", null);
throw new ValidatorException(message);
}
文章来源: Custom Validator, should I use FacesContext#addMessage() or throw ValidatorException?