Comment puis-je passer un paramètre à Primefaces menuitem qui affiche une boîte de dialogue?

J'ai un p:menuButton qui contient plusieurs p:menuitems. Chacun de ces éléments a des appels à une méthode avec un paramètre spécifique à la session d'étendue de la sauvegarde de haricot et d'ouvrir une boîte de dialogue modale ce qui dépend de la sauvegarde de haricot. Mon p:menuitem ressemble à ceci:

<p:menuitem value="..." oncomplete="dialog.show()" update=":dialog" actionListener="#{myController.createNewItem}">
</p:menuitem>

Le paramètre passé à myController.createNewItem est la seule chose qui dépend de la menuitem a été cliqué et j'ai essayé de le passer en 3 façons:

1) <f:setPropertyActionListener target="#{myController.newItem.property}" value="..." />

Cela ne fonctionne pas parce que la boîte de dialogue modale semble bloc f:setPropertyActionListener. Le setter pour myController.newItem.la propriété est appelée seulement après que j'ai fermer la boîte de dialogue, ce qui n'est pas assez bon. Il fonctionne si le dialogue n'est pas modale, mais j'ai vraiment besoin d'être modale.

2) <f:attribute name="param" value="..." />
de l'événement.getComponent().getAttributes() retourne une carte avec un seul élément, qui ressemble à quelque chose comme some_namespace.MARK_ID => un certain nombre, qui n'est clairement pas le paramètre je voulais transmettre.

3) <f:param name="param" value="..." />
J'ai lu cela fonctionne uniquement avec de l'action, pas actionListener, mais il a essayé de toute façon.
FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap() contient tous les champs de mon formulaire ainsi que quelques paramètres supplémentaires, mais pas celui que je voulais passer, donc je suppose que ça ne fonctionne pas.

Est-il possible de faire ce que je suis en train de le faire ici, ou suis-je coincé avec l'aide de f:setPropertyActionListener et de dialogue non modale? Merci.

comment combat actionListener="#{myController.createNewItem(your value)}"
Non, ce n'est pas un doublon comme je l'ai déjà utiliser la mise à jour et oncomplete attributs.
J'ai lu que le passage de paramètres par le biais de l'expression est possible pour l'action, pas pour actionListener.
ya ses pas possible de passer des paramètres à l'aide de actionListener. Essayez de <p:ajax écouteur=""> il faut des arguments.
pourquoi ne pas utiliser l'action ? public void createNewItem(....

OriginalL'auteur Miloš Rašić | 2012-07-04