自定义验证器,我应该使用FacesContext#addMessage()还是抛出ValidatorException?[英] Custom Validator, should I use FacesContext#addMessage() or throw ValidatorException?

本文是小编为大家收集整理的关于自定义验证器,我应该使用FacesContext#addMessage()还是抛出ValidatorException?的处理方法,想解了自定义验证器,我应该使用FacesContext#addMessage()还是抛出ValidatorException?的问题怎么解决?自定义验证器,我应该使用FacesContext#addMessage()还是抛出ValidatorException?问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我想知道在 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 将正确跳过 Update Model Values 和 Invoke Action 阶段.p>

if (!valid) {
    FacesMessage message = new FacesMessage(SEVERITY_ERROR, "Invalid", null);
    throw new ValidatorException(message);
}

本文地址:https://www.itbaoku.cn/post/1793782.html