Dans mon JSF/Facelets application, voici une version simplifiée d'une partie de mon formulaire:
<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>
J'aimerais être en mesure d'attribuer une erreur à un h:message d'étiquette sur la base de quelque chose qui se passe dans le continueButton() la méthode. Les différentes erreurs doivent être affichés pour newPassword et newPassword2. Un validateur n'aurez pas vraiment de travail, car la méthode qui permettra d'obtenir des résultats (à partir de la DB) est exécuté dans le continueButton() la méthode, et il est trop coûteux de faire fonctionner deux fois.
Je ne peux pas utiliser le h:messages de la balise parce que la page a plusieurs endroits que j'ai besoin d'afficher différents messages d'erreur. Quand j'ai essayé ceci, la page affiche les doublons de chaque message.
J'ai essayé ce que deviner, mais, pas de chance:
public Navigation continueButton() {
...
expensiveMethod();
if(...) {
FacesContext.getCurrentInstance().addMessage("newPassword", new FacesMessage("Error: Your password is NOT strong enough."));
}
}
Ce qui me manque? Toute aide serait appréciée!