Debe usar a4j's commandButton
y actionParam
para poder pasar un parámetro dinámico al servidor.
Además, necesita un atributo en su bean que recibirá el valor de param.
Ejemplo:
<a4j:commandButton action="#{myBean.action}" value="Submit!">
<a4j:actionParam name="arg" noEscape="true" value="getTheValue()" assignTo="#{myBean.myBeanArg}" />
</a4j:commandButton>
Aquí myBean.myBeanArg
recibirá el valor devuelto por la función de JavaScript getTheValue()
.
Observe el atributo noEscape="true"
. Esto es necesario porque, de lo contrario, los datos dentro de value
se incluirían entre comillas simples y se escaparon, lo que no da como resultado la ejecución de javascript. Como se indica en la documentation:
Es posible utilizar la expresión o función de JavaScript en el "valor" atributo. En este caso, el atributo "noEscape" debe establecerse en "verdadero". El resultado de esta invocación de JavaScript se envía al servidor como un valor de <a4j:actionparam>
.