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グラスフィッシュでは何も出力されなかったため、メソッドは呼び出されません。

アクションリストナーを機能させる方法は??

更新 2:

メニューから結果を削除すると、アクション リスナが機能していることがわかりました。しかし、結果または URL を使用してページに移動すると、それを解決する方法が機能しませんでした。

4

2 に答える 2

2

onclick と oncomplete はどちらも、javascript イベント ハンドラを呼び出すためにのみ使用してください

メニュー項目をクリックしたときにサーバーで何かを呼び出したい場合は、actionListenerを使用します。補足として、もちろん、ページのレンダリング段階で jsf 式が評価されるため、ページを更新すると onclick 内のコードがトリガーされます。

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 に答える