我想知道在 JSF 1.2 中实现自定义验证器的正确方法是什么。在我的验证器类中'
public void validate(FacesContext context, UIComponent component,Object value) throws ValidatorException {}
方法,我正在进行验证检查,只是在条件无效的情况下通过context.addMessage(new FacesMessage(xxx...);
将FacesMessage
实例添加到上下文中。这似乎在我的应用程序中工作正常。但是,我不确定我是否还需要明确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);
}