刷新页面时如何停止调用onclick功能?

时间:2013-10-01 11:20:12

标签: jsf primefaces

我有一个带有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:

我发现,当我从菜单中删除结果时,动作列表器正在工作..但是当我使用结果或网址转到页面时没有工作如何解决?

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"; 
   }