JSF:在AJAX调用更新视图后立即调用javaScript方法

时间:2012-06-11 07:18:14

标签: java javascript jsf jsf-2 primefaces

在我的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函数,该函数正在进行更新,例如在操作菜单操作 - &gt;创建权限 - &gt;当CreateAdminPrivilege.xhtml进入视图时,在这个页面上的主体OnLoad()我尝试调用JavaScript方法,但由于我猜这个页面的ajax调用它没有被调用。

所以我需要找出调用这个AJAX调用更新的JavaScript方法的方法。 帮助我解决这个问题......

提前致谢。

2 个答案:

答案 0 :(得分:4)

您可以使用p:menuItem的{​​{1}}属性:

oncomplete

如果您想进一步区分ajax调用的成功与错误,请使用<p:menuitem ... oncomplete="doSomething()"> onsuccess属性:

onerror

答案 1 :(得分:0)

请参阅jsf js api

例如:

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