【问题标题】:Set f:param value with JavaScript使用 JavaScript 设置 f:param 值
【发布时间】: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设置时。

这是不好的做法吗?

感谢您的帮助。

【问题讨论】:

    标签: java javascript jsf


    【解决方案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 中的属性的隐藏输入字段。

        【讨论】:

          猜你喜欢
          • 2015-08-26
          • 1970-01-01
          • 2012-07-01
          • 2012-08-17
          • 2012-02-08
          • 2012-11-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多