使用JavaScript设置f:param值

时间:2011-04-07 10:38:58

标签: java javascript jsf

是否可以这样做:

jsf code(伪):

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

我的意思是在使用JS设置<f:param>时的方法。

这是不好的做法吗?

感谢您的帮助。

3 个答案:

答案 0 :(得分:6)

您需要使用a4j的commandButtonactionParam才能将动态参数传递回服务器。

此外,您需要一个将接收param值的bean属性。

示例:

<a4j:commandButton action="#{myBean.action}" value="Submit!">
    <a4j:actionParam name="arg" noEscape="true" value="getTheValue()" assignTo="#{myBean.myBeanArg}" />
</a4j:commandButton>

此处myBean.myBeanArg将收到javascript函数getTheValue()返回的值。

注意noEscape="true"属性。这是必需的,因为否则value中的数据将用单引号括起来并进行转义,从而导致无法执行javascript。如documentation中所述:

  

可以在“值”中使用JavaScript表达式或函数   属性。在这种情况下,应将“noEscape”属性设置为   “真正”。此JavaScript调用的结果将发送到服务器   作为<a4j:actionparam>的值。

答案 1 :(得分:4)

<f:param>是服务器端的东西,而javascript是客户端。所以你不能

您可以使用ajax a4j执行此操作,

答案 2 :(得分:0)

不,你不能。 例如,您可以更改链接的属性,并在服务器端的操作方法中获取此属性。

或者,您可以使用链接到bean中属性的隐藏输入字段。