使用A4J,我怎么重新解析JavaScript函数,并重新描绘后打电话了吗?(using A4J,

2019-10-18 16:06发布

例如,我已经试过

<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()我检查了使用萤火虫的Ajax响应,并配备了预期的新的JavaScript代码,但是当我打电话reallyUpdateIt()旧的代码被触发。

我使用JSF 1.2,RichFaces的3.3.3,

Answer 1:

事实证明,使用<a4j:region id="scriptSuggested" >不生成HTML节A4J可以重新解析,我不得不使用<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>


文章来源: using A4J, how do I rerender a javascript function, and call it after rerendering?