【问题标题】:JSF: Call javaScript method immediately after view is updated by AJAX callJSF:通过 AJAX 调用更新视图后立即调用 javaScript 方法
【发布时间】:2012-06-11 07:18:14
【问题描述】:

在我的 JSF 项目中,我使用 PrimeFaces 的 Menu 组件通过 ajax 调用更新我的 UI 页面的中心组件(UI 页面的中心部分)。

<p:menubar>
<p:submenu label="Actions">
    <p:submenu label="Create Privilege">
        <p:menuitem value="Create Administrative Privilege" actionListener="#{leftNavigationBean.selectCenterComponent}" update=":centerPanel">
            <f:attribute name="centerComponentName" value="/CreateAdminPrivilege.xhtml" />
        </p:menuitem>
        <p:menuitem value="Create Access Privilege" actionListener="#{leftNavigationBean.selectCenterComponent}" update=":centerPanel">
            <f:attribute name="centerComponentName" value="/CreateAccessPrivilege.xhtml" />
        </p:menuitem>
    </p:submenu>
</p:menubar>

现在组件通过 AJAX 调用更新后,我想立即调用 JavaScript 函数对更新的组件执行一些操作。

我尝试在页面的正文 OnLoad() 上调用 JavaScript 函数,该页面正在更新,例如在 Action Menu Action -> Create Privilege -> 当 CreateAdminPrivilege.xhtml 出现在视图中时,在此页面正文 OnLoad() 上,我尝试调用 JavaScript 方法,但由于 ajax 调用此页面我猜它没有被调用。

所以我需要弄清楚调用此 AJAX 调用更新的 JavaScript 方法的方法。 帮我解决这个问题...

提前致谢。

【问题讨论】:

    标签: java javascript jsf jsf-2 primefaces


    【解决方案1】:

    您可以为此使用p:menuItemoncomplete 属性:

    <p:menuitem ... oncomplete="doSomething()">
    

    如果要进一步区分ajax调用的成功和错误,使用onsuccessonerror属性:

    <p:menuitem ... onsuccess="doSomething()" onerror="doSomethingElse()">
    

    【讨论】:

      【解决方案2】:

      jsf js api

      例如:

      jsf.ajax.addOnEvent(function(data){
          if (data.status== 'success') {
              // do stuff
          }
      });
      

      【讨论】:

        猜你喜欢
        • 2015-04-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-30
        • 1970-01-01
        • 1970-01-01
        • 2015-05-29
        • 1970-01-01
        相关资源
        最近更新 更多