我有这段代码无法正常工作。我已定义fieldToStore
。我可以提醒它,我可以在firebug控制台中看到它的值,但是当它被传递给myBean时,它总是在String值的情况下是未定义的,如果它是布尔值则是false。
有什么想法吗?
<a4j:commandButton id="bt1" action="#{myBean.doSomething}" onclick="fieldToStore=false;saveFieldState();">
</a4j:commandButton>
<a4j:jsFunction name="saveFieldState" action="#{myBean.dummyAction}" />
<a4j:actionparam name="fieldToStore" assignTo="#{myBean.fieldToStore}" />
</a4j:jsFunction>
我的期望是,在点击bt1之后,myBean.fieldToStore的值为false,根据javascript var fieldToStore。
答案 0 :(得分:2)
您正在使用<a4j:actionParam>
,a combination of f:param and f:actionListener将value
属性分配给assignTo
中的媒体资源。
您想要使用<a4j:param>
。见example in the official docs
答案 1 :(得分:1)
我想通了......问题就在于我在事件onclick上调用jsFunction的方式:
onclick="fieldToStore=false;saveFieldState();
它应该是:
onclick="fieldToStore=false;saveFieldState(fieldToStore);
有关richfaces文档的示例具有误导性:
<body onload="callScript()">
<h:form>
...
<a4j:jsFunction name="callScript" data="#{bean.someProperty1}" reRender="someComponent" oncomplete="myScript(data.subProperty1, data.subProperty2)">
<a4j:actionparam name="param_name" assignTo="#{bean.someProperty2}"/>
</a4j:jsFunction>
...
</h:form>
...
</body>
Imo应该是onload =“callScript(param_name)”。