0

我有一个使用 OnClick 功能的 ap:Menuitem 页面。我的问题是,当我刷新页面时,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:

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

4

2 回答 2

2

onclick 和 oncomplete 都应该只用于调用 javascript 事件处理程序

如果您想在单击菜单项时调用服务器上的某些内容,请使用actionListener。顺便说一句,onclick 内的代码当然会在刷新页面时触发,因为 jsf 表达式是在页面渲染阶段评估的。

您可以在Primefaces Demo上找到一个工作示例

于 2013-10-01T12:15:32.683 回答
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"; 
   }
于 2013-10-01T13:20:50.737 回答