我有一个带有p:Menuitem的页面,使用OnClick功能。 我的问题是,当我刷新页面时,事件onclick仍在运行,我该如何阻止它?
客户端代码:
<p:submenu label="Ordres de Fabrication" styleClass="submenustyle" >
<p:submenu label="Ordre non Réalisé">
<p:menuitem value="Afficher" outcome="/admin/gestionduplanning/ofnonrealiseAfficher.xhtml" onclick="#{ofrealiser.getofnonrealiser()}" />
<p:menuitem value="Ajouter" outcome="/admin/gestionduplanning/ofnorealiseAjouter.xhtml" />
</p:submenu> ...
更新1:
<p:menuitem value="Afficher" outcome="/admin/gestionduplanning/ofnonrealiseAfficher.xhtml" onclick="#{ofrealiser.getofnonrealiser()}" actionListener="#{exporterPlanningGlobal.refreshfromjsfdateplanning()}" />
托管bean方法:
public void refreshfromjsfdateplanning()
{
System.out.println("Test actionlistener");
}
但是这个方法没有被调用,因为在我的IDE glassfish中它没有打印任何东西。
如何让actionlistner工作?
更新2:
我发现,当我从菜单中删除结果时,动作列表器正在工作..但是当我使用结果或网址转到页面时没有工作如何解决?
答案 0 :(得分:2)
onclick和oncomplete都只能用于调用javascript事件处理程序。
如果要在单击菜单项时在服务器上调用某些内容,请使用 actionListener 。 作为副作用,当然刷新页面时会触发onclick中的代码,因为jsf表达式是在页面呈现阶段进行评估的。
您可以在Primefaces Demo
上找到一个有效的例子答案 1 :(得分:0)
我找到了解决问题的方法:在使用p:menuitem导航之前进行治疗:
<p:menuitem value="Exporter tous les plannings" styleClass="submenustyle" action="#{exporterPlanningGlobal.refreshfromjsfdateplanning}" update="@form"/>
和托管bean方法:
public String refreshfromjsfdateplanning()
{
System.out.println("treatment done");
return "/espaceZP01/gestionduplanning/exporterTousPlanning.xhtml?faces-redirect=true";
}