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

我的意思是方法,当&lt;f:param&gt;用JS设置时。

这是不好的做法吗?

感谢您的帮助。

【问题讨论】:

【参考方案1】:

您需要使用 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”属性应设置为 “真的”。这个 JavaScript 调用的结果被发送到服务器 作为&lt;a4j:actionparam&gt; 的值。

【讨论】:

【参考方案2】:

&lt;f:param&gt; 是服务器端的东西,而 javascript 是客户端。所以你不能

你可以使用ajaxa4j来做到这一点,

【讨论】:

【参考方案3】:

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

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

【讨论】:

以上是关于使用 JavaScript 设置 f:param 值的主要内容,如果未能解决你的问题,请参考以下文章

JSF 中 f:param 的条件渲染

解析分号分隔的列表

CoffeeScript 是不是支持单引号字符串中的插值?

如何在 h:inputText 中将参数传递给 f:ajax? f:参数不起作用

javascript 使用javascript设置选定的值

javascript 使用JavaScript设置值; API $ s