2011-04-07 10 views
6

¿Es posible hacer:conjunto F: valor de parámetro con JavaScript

código JSF (pseudo):

... 
<f:param name="arg" value="document.getElementById('naming').text()"> 
<h:inputText id="naming"></h:inputText> 
... 

me refiero enfoque, cuando <f:param> se establece con JS.

¿Es una mala práctica?

Gracias por la ayuda.

Respuesta

6

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>.

4

es material del lado del servidor, mientras que javascript es del lado del cliente. Por lo que no

puede Usted puede usar Ajax a4j a ello,

0

No, no puede. Puede cambiar un atributo de un enlace, por ejemplo, y obtener este atributo en su método de acción en el lado del servidor.

Alternativamente, podría utilizar un campo de entrada oculto vinculado a un atributo en su bean.

Cuestiones relacionadas