Et ma confusion avec JSF continue. Ceci est la suite d'un question asked yesterday, mais je pense qu'il mérite une nouvelle question. J'ai un seul composant seam qui s'attend à ce qu'un paramètre d'URL soit injecté pour récupérer un List<String>
à partir d'une méthode. Cela fonctionne parfaitement sur la première navigation sur la page. Le List
est utilisé pour afficher beaucoup de différents groupes selectOneRadio
qui peuplent un <h:form/>
.JSF/Seam - nouvelle instance de composant sur submit?
Maintenant sur le soumettre, je ne peux pas obtenir le paramètre d'URL pour être injecté ou autrement mis sur le composant! L'ajout de <h:inputHidden/>
provoque le lancement de FacesExceptions.
Puis j'ai essayé de définir le List
comme une variable d'instance sur l'objet, et quand l'appel suivant est fait sur le submit (que je ne comprends pas aussi pourquoi c'est fait) je vérifie pour voir si la variable est non null: si ce n'est pas le cas, retournez-le.
Maintenant, j'ai trouvé qu'une nouvelle instance du composant est créée sur soumettre !!!
getList() called
this.toString(): [email protected]
#### This is when submit is clicked
getList() called
this.toString(): [email protected]
Le composant a les annotations suivantes:
Stateful
@Scope(ScopeType.CONVERSATION)
@Name("bean")
@Restrict("#{identity.loggedIn}")
Quelqu'un peut-il expliquer pourquoi il y a une nouvelle instance du composant créé? Je ne sais vraiment pas comment gérer ça. Je pensais que le paramètre caché fonctionnerait, parce que c'est comme ça que je le ferais avec du HTML, et je suis un peu surpris que ça ne marche pas pour JSF/Seam.
La méthode 'getList()' est marquée avec '@ Begin', et je peux actualiser la page qui affiche mon formulaire un certain nombre de fois et le même bean backing est utilisé. Lorsque je clique sur submit, je suis redirigé vers ma page 'summary.xhtml', et il y a un nouveau paramètre d'URL' cid'. Comment maintenir la conversation sur un envoi? – purecharger
J'ai essayé h: commandButton> Et je encore obtenir un nouvel identifiant de conversation lorsque je clique sur soumettre –
purecharger