JSF从常规bean方法抛出FacesMessage

Evg*_*rov 1 validation jsf message

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

FacesMessage message = new FacesMessage(
    FacesMessage.SEVERITY_ERROR, "Invalid length!",
    "Length = 8");
throw new ConverterException(message);
Run Code Online (Sandbox Code Playgroud)

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

Cri*_*riu 5

当然,有时您不仅可以依靠Validators,还需要在bean中进行一些验证.(大多数情况下,当您一起验证多个输入的数据时,您需要这种验证)

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

FacesContext.getCurrentInstance().addMessage(null,
                        new FacesMessage("This username already exists!"));
Run Code Online (Sandbox Code Playgroud)

如果要显示每个组件的验证消息而不是每页一般使用一个验证消息,请参阅答案.

Ps:注意如果你使用h:messages它也会显示其他组件验证消息.如果你不想要这套globalOnly="true"