现在,我正在使用JSF 2.0和facelets创建一些网页。我有一个登录页面,其中除了登录面板外还包含其他内容。

我要在面板顶部的面板的两个输入字段(用户名和密码)上显示相同的消息,但对于两者都只显示一条消息。当我使用<h:messages>时,代码会正确显示,但也会与其他组件的所有其他消息一起显示。因为<h:messages>对于整个facelet都是Global。

我尝试使用两个<h:message for="">并为两个输入字段添加相同的消息,但是该消息显示两次。

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

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

最佳答案

如果要通过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}"/>


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

关于java - 对facelets页面中的某些元素使用相同的消息,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10251567/

10-11 22:48
查看更多