JSF从常规bean方法抛出FacesMessage



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

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

和ti将消息发送到由转换器或验证器确定的某个h:消息组件。是否有一种方法可以在常规bean方法中做类似的事情(如果有,如何确定将呈现消息的h:message组件),或者更好的方法是在自定义验证器中完成所有验证工作,并使业务逻辑不检查bean方法。

当然,有时您不能只依靠validator,而需要在bean中进行一些验证。(大多数情况下,当您同时验证多个输入的数据时,您需要这种验证)

在这种情况下,如果页面上有一个h:messages控件,这将在那里显示错误:

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

如果你想显示每个组件的验证消息,而不是每个页面使用一个通用的验证消息,请参阅这个答案。

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

相关内容

  • 没有找到相关文章

最新更新