我的preRenderView事件调用OmniFaces Ajax实用程序的oncomplete()方法在客户端上执行javascript。我刚测试了这个,并且javascript没有在客户端上执行。
我的f:事件在下面。
<f:metadata>
<o:enableRestorableView/>
<f:event type="javax.faces.event.PreRenderViewEvent" listener="#{pageNavigationController.preRenderView()}"/>
</f:metadata>
我的pageNavigationController.preRenderView()位于下方,
public void preRenderView() {
if (initLayoutForPage) {
// initialize layout for page
layoutController.initializeForPage(page);
initLayoutForPage = false;
}
if (usersController != null) {
usersController.preRenderView();
}
}
调用下面的usersController.preReviewView(),它调用Ajax实用程序的oncomplete()。
public void preRenderView() {
Ajax.oncomplete("document.getElementById('menuBarForm:btnLogout').click();");
}
目前正在制作中,上面的javascript按设计工作;这个javascript被称为如下。
<script>window.onbeforeunload = function() { document.getElementById('menuBarForm:btnLogout').click(); }</script>
那么,为什么javascript没有在客户端上执行?
编辑:我不再需要这个功能,因为我刚刚找到原始问题的解决方法,但我希望得到这个问题的答案。谢谢。 :)答案 0 :(得分:1)
我刚刚确认Ajax.oncomplete()即使在/通过preRenderView事件执行时也按设计工作。 OmniFaces的“Ajax”实用程序用于“Ajax”请求。我假设OmniFaces Ajax.oncomplete()会在fR上的preRenderView期间向客户端发送javascript(整页刷新或非AJAX请求)。