私の JSF/Facelets アプリでは、フォームの一部を簡略化したものを次に示します。
<h:form id="myform">
<h:inputSecret value="#{createNewPassword.newPassword1}" id="newPassword1" />
<h:message class="error" for="newPassword1" />
<h:inputSecret value="#{createNewPassword.newPassword2}" id="newPassword2" />
<h:message class="error" for="newPassword2" />
<h:commandButton value="Continue" action="#{createNewPassword.continueButton}" />
</h:form>
continueButton() メソッドで起こっていることに基づいて、特定の h:message タグにエラーを割り当てられるようにしたいと考えています。newPassword と newPassword2 では、異なるエラーを表示する必要があります。結果を (DB から) 配信するメソッドは continueButton() メソッドで実行され、コストがかかりすぎて 2 回実行できないため、バリデーターは実際には機能しません。
ページにはさまざまなエラー メッセージを表示する必要がある複数の場所があるため、h:messages タグを使用できません。これを試したところ、ページにすべてのメッセージが重複して表示されました。
私はこれを最善の推測として試しましたが、運はありません:
public Navigation continueButton() {
...
expensiveMethod();
if(...) {
FacesContext.getCurrentInstance().addMessage("newPassword", new FacesMessage("Error: Your password is NOT strong enough."));
}
}
私は何が欠けていますか?どんな助けでも大歓迎です!