1

私は現在ナビゲーションメニューを持っています:

...
<p:menuitem id="id1" value="Page 1" action="home.xhtml?faces-redirect=true" actionListener="#{homeBean.someMethod(1)}"/>
<p:menuitem id="id2" value="Page 2" action="other.xhtml?faces-redirect=true" actionListener="#{otherBean.someMethod(1)}"/>

今、私はこれらのリダイレクトを取り除きたいです。そこで、actionの代わりに属性urlを試しましたが、actionListenerが呼び出されなくなりました。

この場合、リスナーを呼び出すにはどうすればよいですか?

<p:menuitem id="id1" value="Page 1" url="home.jsf">
  ... here (or maybe somewhere else) should go the call to my listener ...
</p:menuitem>

ジョニー

4

1 に答える 1

3

p:menuItemPOSTとGETをサポートします。これらのどれが選択されるかは、url属性の存在によって異なります。PFドキュメントからの引用:

これはurl属性によって決定されます。存在する場合はmenuitemがGETリクエストを実行し、存在しない場合は親フォームが投稿されます。

サーバー側でアクションメソッドを呼び出す場合は、POSTを実行する必要があります。リダイレクトが必要ない場合はString、アクションメソッドからナビゲーションターゲットを返す必要があります。

public String someAction() {
  ...
  return "home";
} 

これによりhome.xhtml、アクションメソッドが終了したかどうかが確認されます。

メニューからこのアクションメソッドを呼び出すことができます。

<p:menuitem id="id1" value="Page 1" action="#{someBean.someAction}"/>
于 2012-06-11T07:08:09.793 に答える