0

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

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

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

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

如果其中任何一个不正确,我该怎么做?

4

1 回答 1

1

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

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

于 2012-04-20T20:28:35.723 回答