В моем приложении 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>
Я бы хотел иметь возможность назначить ошибку определенному тегу h: message, основываясь на том, что происходит в методе continueButton (). Для newPassword и newPassword2 должны отображаться разные ошибки. Валидатор на самом деле не будет работать, потому что метод, который будет доставлять результаты (из БД), запускается в методе continueButton () и слишком дорог, чтобы запускаться дважды.
Я не могу использовать тег h: messages, потому что на странице есть несколько мест, которые мне нужны для отображения разных сообщений об ошибках. Когда я попробовал это, на странице отображались дубликаты каждого сообщения.
Я попробовал это как лучшую догадку, но не повезло:
public Navigation continueButton() {
...
expensiveMethod();
if(...) {
FacesContext.getCurrentInstance().addMessage("newPassword", new FacesMessage("Error: Your password is NOT strong enough."));
}
}
Чего мне не хватает? Любая помощь будет оценена!