2012-04-20 3 views
0

今、JSF 2.0とfaceletsを使用していくつかのWebページを作成しています。私はログインパネルだけでなく、他のものを含んでいるログインページを持っています。Faceletsページのいくつかの要素に同じメッセージを使用

私は、パネルの2つの入力フィールド(ユーザー名とパスワード)に対して同じメッセージをパネルの上に表示したいが、両方のメッセージは1つだけ表示したい。 <h:messages>を使用すると、コードは正しく表示されますが、他のコンポーネントの他のすべてのメッセージとともに表示されます。 <h:messages>はfacelet全体に対してグローバルであるためです。

2つの<h:message for="">を使用し、両方の入力フィールドに同じメッセージを追加しようとしましたが、メッセージが2回表示されました。

メッセージは「ユーザー名またはパスワードが間違っています」となります。

いずれかのメッセージが間違っている場合、どのように表示することができますか?

答えて

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

を、ユーザー名とパスワードの両方のフィールドに同じ検証を2回適用する必要がある理由は明確ではありません。

+0

本当に助けてくれてありがとう、私は実際にUIInput.isValid();私は2つの条件と同じメッセージを表示したいので、そのようにしたいと思っていました。 – engma

関連する問題