0

現在、JSF2.0とファセットを使用していくつかのWebページを作成しています。ログインパネル以外のものを含むログインページがあります。

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

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

メッセージは「ユーザー名および/またはパスワードが正しくありません」になります。

それらのいずれかが正しくない場合、どうすればメッセージを表示できますか?

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

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

于 2012-04-20T20:28:35.723 に答える