JSFで簡単な例を作成しています。小さなログイン アプリケーションです。私の問題は、私のページにエラーメッセージが重複していることです:
私のページには 2 つh:message
のタグ (ユーザー名とパスワード用) と 1 つのタグh:messages
(グローバル メッセージ用) があります。
<h:form id="loginForm">
<h:panelGrid columns="3">
<h:outputText value="Username" />
<h:inputText id="username" value="#{loginBean.username}"
required="true" requiredMessage="Please enter your username" />
<h:message for="username" errorClass="errorMessage" /> <!-- Message for username -->
<h:outputText value="Password" />
<h:inputSecret id="password" value="#{loginBean.password}"
required="true" requiredMessage="Please enter your password" />
<h:message for="password" errorClass="errorMessage" /> <!-- Message for password -->
<h:commandButton value="Login" action="#{loginBean.login}" />
</h:panelGrid>
<h:messages styleClass="errorMessage" /> <!-- Global messages -->
</h:form>
login()
バッキング Bean のアクション メソッド:
public String login() {
FacesContext facesContext = FacesContext.getCurrentInstance();
if ("admin".equals(username) && "pass".equals(password)) {
return "success";
} else {
facesContext.addMessage("loginForm", new FacesMessage("Username or password is incorrect"));
return null;
}
}
グローバルメッセージのボタンの下ではなく、これらのフィールドの横にのみ空のユーザー名またはパスワードに関するメッセージを表示したい. また、パスワードまたはユーザー名が正しくない場合、アクション メソッドからエラー メッセージをグローバル メッセージに出力したいと考えています。どうすればこれを解決できますか?
私は属性を使用しようとしましたglobalOnly
:
<h:messages styleClass="errorMessage" globalOnly="true" /> <!-- Global messages -->
この場合、グローバルメッセージがまったく表示されないため、私の問題は完全には解決されません。
前もって感謝します!