2010-11-05 5 views
0

Je sais que cela peut sembler une question fondamentale, mais j'ai du mal à comprendre cela. Tout d'abord j'ai cette forme:Comment soumettre un formulaire dans RichFaces?

<h:form> 
    <h:inputText value="#{movies.name}"/> 
    <a4j:commandButton id="mybutton" value="Modify" immediate="true" action="#{movies.testModify}"/> 
</h:form> 

Je veux attraper la valeur du texte d'entrée à l'intérieur de ma méthode testModify() de la fève de films. Mon problème est que testModify n'est pas appelé du tout. Le comportement bizarre que j'ai remarqué est que lorsque je supprime la balise h: form, la méthode est appelée, mais je ne sais toujours pas comment obtenir la valeur de mon texte d'entrée. De ce que j'ai lu, a4j: commandButton a besoin de h: form pour qu'il fonctionne correctement.

Toute aide sera grandement appréciée!

+0

J'ai découvert ce qu'était le problème: j'enroulai accidentaly la h: forme dans un autre h: forme. Après avoir enlevé le parent h: forme l'appel à la méthode a fonctionné parfaitement et en outre, la propriété de nom était en place. Donc, en conclusion, a4j: commandButton fait le travail très bien. –

Répondre

0

Utilisez un h:commandButton au lieu d'un a4j:commandButton. Le premier est le bouton JSF standard qui soumettra votre formulaire, ce dernier effectue une requête ajax.

0

Tout d'abord, comme l'a dit Markos Fragkakis, utilisez un <h:commandButton> au lieu d'un <a4j:commandButton> ajaxified de base, comme dans votre cas, vous n'avez pas intérêt d'utiliser une action Ajax ici.

Ensuite, supprimez l'attribut immediate="true" sur ce bouton. En utilisant cet attribut means that, l'ActionListener par défaut doit être exécuté immédiatement (c'est-à-dire pendant la phase Apply Request Values du cycle de vie du traitement des demandes), plutôt que d'attendre la phase Invoke Application.

Si votre action sur le bean Java n'est toujours pas appelée, peut-être que quelque chose de mal se passe avant le Invoke Application JSF phase. Ajout d'un <h:messages> affiche les questions possibles:

<h:form> 
    <h:messages/> 
    <h:inputText value="#{movies.name}"/> 
    <h:commandButton id="mybutton" value="Modify" action="#{movies.testModify}"/> 
</h:form> 
Questions connexes