2012-06-11 88 views
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)}"/> 

現在我想擺脫這些重定向。所以我嘗試了屬性url而不是action,但是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> 

強尼

回答

3

p:menuItem支持POST和GET。選擇哪一個取決於url屬性的存在。從PF documentation引述:

This is decided by url attribute, if it is present menuitem does a GET request, if not parent form is posted.

如果你想在你需要做一個POST在服務器端調用操作方法。如果你不想重定向,你需要從你的行動方法返回導航目標爲String

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

如果操作方法結束這將Ì導航到home.xhtml

您可以從菜單中調用該操作方法:

<p:menuitem id="id1" value="Page 1" action="#{someBean.someAction}"/> 
+0

馬特您好,感謝您的幫助。這解決了這個問題。還有一件事:如果我不添加** ajax =「false」**我得到以下錯誤:_UI佈局初始化錯誤。中心窗格元素不存在。中間窗格是一個必需的元素._任何猜測是什麼造成這種情況? – user871611

+0

很高興聽到它的作品。至於第二個問題:不知道,也許是你的佈局配置(如果你使用'p:layout')? –

+0

是的,我正在使用p:layout。但它的模板相同,只有內容發生變化。我很困惑。你的意思是什麼_layout configuration_? – user871611

相關問題