Используя A4J, как мне отрендерить функцию javascript и вызвать ее после перерисовки?

Например я пробовал

<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 с помощью firebug, и он приходит с ожидаемым новым кодом javascript, но когда я звоню reallyUpdateIt(), старый код срабатывает.

Я использую JSF 1.2, richfaces 3.3.3,

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>
Другие вопросы по тегам