Java 对facelets页面中的某些元素使用相同的消息

Java 对facelets页面中的某些元素使用相同的消息,java,jsf,facelets,custom-errors,Java,Jsf,Facelets,Custom Errors,现在我正在使用JSF2.0和facelets创建一些网页。我有一个登录页面,其中包含除登录面板之外的其他内容 问题是,我想在面板顶部为面板的两个输入字段(用户名和密码)显示相同的消息,但两个字段只显示一条消息。当我使用时,代码会正确显示,但也会与其他组件的所有其他消息一起显示。因为对于整个facelet是全局的 我尝试使用两个并为两个输入字段添加相同的消息,但是消息显示了两次 消息将是“用户名和/或密码不正确” 如果其中任何一条消息不正确,如何显示消息?如果您通过FacesContext.add

现在我正在使用JSF2.0和facelets创建一些网页。我有一个登录页面,其中包含除登录面板之外的其他内容

问题是,我想在面板顶部为面板的两个输入字段(用户名和密码)显示相同的消息,但两个字段只显示一条消息。当我使用
时,代码会正确显示,但也会与其他组件的所有其他消息一起显示。因为
对于整个facelet是全局的

我尝试使用两个
并为两个输入字段添加相同的消息,但是消息显示了两次

消息将是“用户名和/或密码不正确”


如果其中任何一条消息不正确,如何显示消息?

如果您通过FacesContext.addMessage(..)API在支持bean中手动添加这些消息,为什么不能仅为用户名字段或整个登录面板添加它们

如果为此使用自定义验证器,则可以利用UIInput.isValid()方法并尝试以下操作:

<h:message for="password" rendered="#{username.valid}"/>
<h:message for="username"/>
<h:inputText id="username" binding="#{username}"/>
<h:inputText id="password" binding="#{password}"/>

甚至

<h:outputText value="msg['genericErrorMessage']" rendered="#{!username.valid || !password.valid}"/>


另一方面,不清楚为什么必须对用户名和密码字段应用相同的验证两次。

感谢realy的帮助,我实际上并不知道UIInput.isValid();我想这样做,因为我有两个条件和我想显示的相同消息。