В моем приложении 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."));
}
}
Что мне не хватает? Любая помощь будет оценена!