在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"