2012-02-17 9 views
1

Lorsque j'essaie d'insérer un validateur dans un élément selectOneMenu contenant un écouteur ajax dans JSF, l'écouteur ajax commence à ne pas fonctionner. Ce qui suit est mon JSF snipplet spécifique question que je parle:Ajax et Validator ne fonctionnent pas ensemble

<h:selectOneMenu id="metalCodes" converter="metalCodeConverter" required="true" requiredMessage="#{lang.metalStockIntroducing_metalCode_req_txt}" value="#{metalStockIntroducingProcessesBean.metal.metalCode}"> 
     <f:selectItem itemLabel="Please select..." noSelectionOption="true" /> 
     <f:selectItems value="#{metalStockIntroducingProcessesBean.metalCodesMenu}" /> 
     <f:ajax listener="#{metalStockIntroducingProcessesBean.changeMetalType}" event="change" execute="metalCodes" render="metalTypesMenu" immediate="false"/> 
     <f:validator validatorId="densityValidator"/> 
</h:selectOneMenu> 

Que voulez-vous me recommander des amis à faire pour que le validateur et l'auditeur ajax fonctionne collaborately dans un h: élément selectOneMenu JSF?

+0

Bien sûr, le validateur n'a pas simplement lancé une exception de validateur? Au fait, vous avez tagué "ajax4jsf" mais je ne vois pas de tag a4j n'importe où. Utilisez-vous vraiment Ajax4jsf (partie de RichFaces) ou non? Lisez la description/info de la balise si vous ne savez pas ce que c'est. – BalusC

+0

Cher BalusC, vous avez raison. Ma mauvaise connaissance de mon JSF m'a permis d'écrire quelque chose de mal orienté. Quand je vois les étiquettes sur la page, celle du bon devrait être A4J. Cependant, j'avais tort et ce devrait être Ajax. Désolé pour les informations trompeuses. Je ne vais pas répéter cette erreur. En passant, que pensez-vous que je devrais faire pour résoudre le problème? Merci ... –

+0

J'ai modifié les étiquettes et retiré la balise A4J. –

Répondre

3

Ils devraient bien fonctionner ensemble. La méthode ajax listener ne sera pas invoquée lorsque le validateur a lancé une exception. Assurez-vous que votre validateur ne le fait pas incorrectement. Assurez-vous que vous réaffichez le <h:message> ou le <h:messages> associé au composant d'entrée afin que vous soyez averti de tous les messages de visages lors d'une requête ajax. Ou au moins lire les journaux du serveur, tous les messages de visages en file d'attente mais non affichés seront enregistrés là.

+0

Maintenant, je me suis rendu compte que l'utilisation de la stratégie de validation pour le composant selectOneMenu ne me conviendrait pas du fait de son comportement dynamique à chaque changement que je n'avais pas réalisé avant vos avertissements. Je devrais utiliser une stratégie d'attribut pour mon cas. Cependant, je suis bloqué avec un autre problème en récupérant la valeur d'attributs dans la classe de validateur. Je vais ouvrir un autre numéro de ceci. Merci BalusC pour vos superbes aides. –

Questions connexes