F: Param no funciona con H: CommandButton
Pregunta
Estoy usando Eclipse 3.6.2 (Helios), Tomcat 7, Myfaces 1.2.9
No tengo ningún problema cuando uso F: Param en H: CommandLink pero cuando pongo f: Param en H: CommandButton no funciona. Cuál es el problema ?
Esta muestra funciona bien:
<h:commandLink value="Click here" action="#{myBean.action}">
<f:param name="parameterName1" value="parameterValue1" />
<f:param name="parameterName2" value="parameterValue2" />
</h:commandLink>
Pero no lo hace
<h:commandButton value="Click here" action="#{myBean.action}">
<f:param name="parameterName1" value="parameterValue1" />
<f:param name="parameterName2" value="parameterValue2" />
</h:commandButton>
Solución
En JSF 1.x, el <f:param>
solo es compatible en <h:commandLink>
, <h:outputLink>
y <h:outputFormat>
, no en <h:commandButton>
. Ese soporte es solo en JSF 2.0 y más nuevo.
Tienes al menos 4 opciones:
Usar
<h:commandLink>
en cambio. Si es necesario, use CSS para diseñarlo para que se vea como un botón. Ver para un ejemplo también JSF Command Button URL Parámetros.Usar
<f:attribute>
o<f:setPropertyActionListener>
en cambio. Ver también Comunicación en JSF.Pasarlos como argumentos de método
action="#{myBean.action('param1', 'param2')}"
. Tomcat 7 es un contenedor Servlet 3.0 que admite EL 2.2 que a su vez admite argumentos de método de aprobación. Solo necesitas asegurarte de que tuweb.xml
se declara conforma servlet 3.0. Ver también Invocar métodos con parámetros de EL en JSF 1.2.Actualice a JSF 2.0. Ofrece tantas ventajas sobre JSF 1.x. Ver también Migrar de JSF 1.2 a JSF 2.0 y Comunicación en JSF 2.0.