2011-04-07 46 views
6

参数值的方式是否有可能做的事:集合F:使用JavaScript

JSF代码(伪):

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

我的意思是方法,当<f:param>设置与JS。

这是不好的做法吗?

感谢您的帮助。

回答

6

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

此外,您需要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”属性应设置为 “true”。此JavaScript调用的结果作为值<a4j:actionparam>发送到服务器 。

4

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

您可以使用Ajax a4j要做到这一点,

0

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

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