使用JavaScript设置f:param值

ser*_*nni 6 javascript java jsf

有可能做到:

jsf代码(伪):

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

我的意思是方法,什么时候<f:param>用JS设置.

这是不好的做法吗?

感谢帮助.

Yur*_*sev 6

您需要使用a4j commandButton并且actionParam能够将动态参数传递回服务器.

此外,您需要bean上的一个属性来接收param值.

例:

<a4j:commandButton action="#{myBean.action}" value="Submit!">
    <a4j:actionParam name="arg" noEscape="true" value="getTheValue()" assignTo="#{myBean.myBeanArg}" />
</a4j:commandButton>
Run Code Online (Sandbox Code Playgroud)

这里myBean.myBeanArg将收到javascript函数返回的值getTheValue().

注意该noEscape="true"属性.这是必需的,因为否则内部数据value将用单引号括起来并进行转义,从而导致无法执行javascript.如文档中所述:

可以在"value"属性中使用JavaScript表达式或函数.在这种情况下,"noEscape"属性应设置为"true".此JavaScript调用的结果将作为值发送到服务器<a4j:actionparam>.