使用 JavaScript 设置 f:param 值
Posted
技术标签:
【中文标题】使用 JavaScript 设置 f:param 值【英文标题】:Set f:param value with JavaScript 【发布时间】:2011-07-31 14:05:38 【问题描述】:有没有可能:
jsf代码(伪):
...
<f:param name="arg" value="document.getElementById('naming').text()">
<h:inputText id="naming"></h:inputText>
...
我的意思是方法,当<f:param>
用JS设置时。
这是不好的做法吗?
感谢您的帮助。
【问题讨论】:
【参考方案1】:您需要使用 a4j 的 commandButton
和 actionParam
才能将动态参数传递回服务器。
此外,您的 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>
的值。
【讨论】:
【参考方案2】:<f:param>
是服务器端的东西,而 javascript 是客户端。所以你不能
你可以使用ajaxa4j
来做到这一点,
【讨论】:
【参考方案3】:不,你不能。 例如,您可以更改链接的属性并在服务器端的操作方法中获取此属性。
或者,您可以使用链接到 bean 中的属性的隐藏输入字段。
【讨论】:
以上是关于使用 JavaScript 设置 f:param 值的主要内容,如果未能解决你的问题,请参考以下文章