2012-04-20 28 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