例如,我试过
<a4j:region id="scriptSuggested" >
<f:verbatim>
<script>
reallyUpdateIt = function () {
// javascript code that changes after aj4 ajax call is triggered
}
</script>
</f:verbatim>
<a4j:jsFunction reRender="scriptSuggested" ignoreDupResponses="true" ajaxSingle="true" name="updateSuggestionValues" action="#{bean.action}" oncomplete="reallyUpdateIt();">
<a4j:actionparam name="userInput" assignTo="#{bean.input}" />
</a4j:jsFunction>
</a4j:region>
我希望调用javascript函数
updateSuggestionValues('val');
将要采取行动
#{bean.action}
之后它会重新发布区域scriptSuggested
,最后会调用reallyUpdateIt()
,
除了更新reallyUpdateIt()
的代码之外,所有工作都有效,我使用firebug检查了ajax响应,它附带了预期的新javascript代码,但是当我调用reallyUpdateIt()
时,旧代码触发了。
我正在使用JSF 1.2,richfaces 3.3.3,
答案 0 :(得分:1)
事实证明使用<a4j:region id="scriptSuggested" >
不生成A4J可以重新呈现的html部分,我必须使用<a4j:outputPanel>
,所以现在它更新了函数,我的代码现在看起来像:
<a4j:region >
<a4j:outputPanel id="scriptSuggested">
<f:verbatim>
<script>
reallyUpdateIt = function () {
// javascript code that changes after aj4 ajax call is triggered
}
</script>
</f:verbatim>
<a4j:jsFunction reRender="scriptSuggested" ignoreDupResponses="true" ajaxSingle="true" name="updateSuggestionValues" action="#{bean.action}" oncomplete="reallyUpdateIt();">
<a4j:actionparam name="userInput" assignTo="#{bean.input}" />
</a4j:jsFunction>
</a4j:outputPanel>
</a4j:region>