在我的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方法的方法。 帮助我解决这个问题......
提前致谢。
答案 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
}
});