是否可以这样做:
jsf code(伪):
...
<f:param name="arg" value="document.getElementById('naming').text()">
<h:inputText id="naming"></h:inputText>
...
我的意思是在使用JS设置<f:param>
时的方法。
这是不好的做法吗?
感谢您的帮助。
答案 0 :(得分:6)
您需要使用a4j的commandButton
和actionParam
才能将动态参数传递回服务器。
此外,您需要一个将接收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中属性的隐藏输入字段。