【问题标题】:Custom Validator, should I use FacesContext#addMessage() or throw ValidatorException?自定义验证器,我应该使用 FacesContext#addMessage() 还是抛出 ValidatorException?
【发布时间】:2012-05-08 09:44:22
【问题描述】:

我想知道在 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 是否足够聪明,可以在上下文中查看错误消息来管理生命周期?

【问题讨论】:

    标签: jsf validation jsf-1.2 custom-validators facescontext


    【解决方案1】:

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

    不要手动添加FacesMessage。用它构造ValidatorException,然后 JSF 会自动将消息添加到正确的组件,然后 JSF 会正确跳过 Update Model ValuesInvoke Action 阶段。 p>

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

    【讨论】:

    • 现在还有效吗?我正在编写一个验证器,但我怀疑是否抛出 ValidatorException。
    • @Douglas:当然可以。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-15
    • 1970-01-01
    • 2014-04-06
    • 2015-08-17
    相关资源
    最近更新 更多