f: param ne fonctionne pas avec h: commandButton
Question
J'utilise éclipse 3.6.2 (Helios), Tomcat 7, MyFaces 1.2.9
Je n'ai aucun problème quand j'utilise f: param dans le h: commandLink mais quand je mets f: h en param: commandButton il ne fonctionne pas. quel est le problème?
cet exemple beau travail:
<h:commandLink value="Click here" action="#{myBean.action}">
<f:param name="parameterName1" value="parameterValue1" />
<f:param name="parameterName2" value="parameterValue2" />
</h:commandLink>
mais il ne fonctionne pas
<h:commandButton value="Click here" action="#{myBean.action}">
<f:param name="parameterName1" value="parameterValue1" />
<f:param name="parameterName2" value="parameterValue2" />
</h:commandButton>
La solution
Dans 1.x JSF, le <f:param>
est pris en charge dans <h:commandLink>
, <h:outputLink>
et <h:outputFormat>
, pas <h:commandButton>
. Ce soutien est seulement dans JSF 2.0 et plus récent.
Vous avez au moins 4 options:
-
Utilisez
<h:commandLink>
à la place. Si nécessaire utiliser le style CSS pour qu'il ressemble à un bouton. Voir un exemple aussi JSF commandButton URL paramètres . -
Utilisez
<f:attribute>
ou<f:setPropertyActionListener>
à la place. Voir aussi Communication dans JSF . -
les passer comme arguments de méthode
action="#{myBean.action('param1', 'param2')}"
. Tomcat 7 est un servlet 3,0 conteneur qui supporte EL 2,2 lequel le passage d'arguments de méthode dans les supports de virage. Vous ne devez vous assurer que votreweb.xml
est déclarée conforme Servlet 3.0. Voir aussi de paramètres avec par Invocation EL dans JSF 1.2 . -
Mise à niveau vers JSF 2.0. Il offre tant d'avantages sur JSF 1.x. Voir aussi de JSF 1.2 Migration à JSF 2.0 Communication dans JSF 2.0 .