f: param non funziona con h: commandButton
Domanda
sto usando Eclipse 3.6.2 (Helios), Tomcat 7, MyFaces 1.2.9
Non ho alcun problema quando uso f: param nella h: commandLink ma quando ho messo f: param in h: commandButton non funziona. qual è il problema?
questo bel lavoro di esempio:
<h:commandLink value="Click here" action="#{myBean.action}">
<f:param name="parameterName1" value="parameterValue1" />
<f:param name="parameterName2" value="parameterValue2" />
</h:commandLink>
ma non
<h:commandButton value="Click here" action="#{myBean.action}">
<f:param name="parameterName1" value="parameterValue1" />
<f:param name="parameterName2" value="parameterValue2" />
</h:commandButton>
Soluzione
In JSF 1.x, il <f:param>
è supportato solo in <h:commandLink>
, <h:outputLink>
e <h:outputFormat>
, non in <h:commandButton>
. Questo supporto è solo in JSF 2.0 e successivi.
Hai almeno 4 opzioni:
-
Usa
<h:commandLink>
invece. Se necessario utilizzare i CSS per lo stile a guardare come un pulsante. Si veda ad esempio anche JSF commandButton URL parametri . -
Usa
<f:attribute>
o<f:setPropertyActionListener>
invece. Vedi anche Comunicazione in JSF . -
passarli come metodo argomenti
action="#{myBean.action('param1', 'param2')}"
. Tomcat 7 è un contenitore di servlet 3.0 che supporta EL 2.2 che a sua volta supporta passare gli argomenti di metodo. Hai solo bisogno di assicurarsi che ilweb.xml
è dichiarato conforme Servlet 3.0. Vedi anche con parametri per EL in JSF 1.2 . -
Aggiornamento a JSF 2.0. Si offre così tanto vantaggi rispetto JSF 1.x. Vedi anche Migrazione da JSF 1.2 a JSF 2.0 Comunicazione in JSF 2.0 .