JSF从常规bean方法抛出FacesMessage

时间:2011-04-27 16:59:33

标签: validation jsf message

在JSF的自定义转换器和验证器中,您可以说:

FacesMessage message = new FacesMessage(
    FacesMessage.SEVERITY_ERROR, "Invalid length!",
    "Length = 8");
throw new ConverterException(message);

和ti将消息发送到从转换器或验证器确定的某个h:消息组件。有没有办法在常规bean方法中执行类似的操作(如果是这样,如何确定将呈现消息的h:message组件)或更好的方法是在自定义验证器中执行所有验证工作并离开业务没有检查bean方法的逻辑。

1 个答案:

答案 0 :(得分:5)

当然,有时您不仅可以依赖Validators,还需要在bean中进行一些验证。 (大多数情况下,当您同时验证多个输入的数据时,需要进行此类验证)

对于这种情况,如果您在页面上有h:messages控件,则会在那里显示错误:

FacesContext.getCurrentInstance().addMessage(null,
                        new FacesMessage("This username already exists!"));

如果您想要显示每个组件的验证消息而不是每页使用一般的验证消息,请参阅this answer。

Ps :请注意,如果您使用h:messages,它也会显示其他组件验证消息。如果您不想要此设置globalOnly="true"