现在我正在使用JSF 2.0和facelets来创建一些网页。我有一个登录页面,其中包含其他内容,而不仅仅是登录面板。
我想在面板顶部显示面板的2个输入字段(用户名和密码)的相同消息,但两者只显示1条消息。当我使用<h:messages>
时,代码会正确显示,但同时也会显示其他组件的所有其他消息。因为<h:messages>
对整个facelet来说都是全局的。
我尝试使用两个<h:message for="">
并为两个输入字段添加相同的消息,但随后消息显示两次。
消息将是“用户名和/或密码不正确”。
如果其中任何一条消息不正确,我怎么能这样做呢?
答案 0 :(得分:1)
如果您是通过FacesContext.addMessage(..)API在支持bean中手动添加这些消息,为什么不能仅为用户名字段或整个登录面板添加'em?
如果您使用自定义验证器,则可以利用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}"/>
另一方面,不清楚为什么必须对用户名和密码字段两次应用相同的验证。