2012-04-20 31 views
0

现在我使用JSF 2.0和facelets来创建一些网页。我有一个登录页面,其中包含除登录面板以外的其他内容。对facelets中的某些元素使用相同的消息

事情是我想显示面板上的面板(用户名和密码)的2输入字段相同的消息,但只有1条消息。当我使用<h:messages>时,代码正确显示,但也与其他组件的所有其他消息一起显示。因为<h:messages>对于整个facelet是全局的。

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

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

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

回答

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}"/> 

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

+0

谢谢,真的很帮助很多,我没有真正意识到UIInput.isValid();我想这样做,因为我有两个条件和我想要显示的消息。 – engma 2012-04-21 00:13:48