2011-10-27 14 views
0

プライムフェイスの使用2.2.1。私たちは、MenuBeanクラスを持っている:パラメータ付きのプログラムメニュー?

public class MenuBean { 

private MenuModel model; 

public MenuBean() { 
    model = new DefaultMenuModel(); 

    //First submenu 
    Submenu submenu = new Submenu(); 
    submenu.setLabel("Dynamic Submenu 1"); 

    MenuItem item = new MenuItem(); 
    item.setValue("Dynamic Menuitem 1.1"); 
    item.setUrl("#"); 
    submenu.getChildren().add(item); 

    model.addSubmenu(submenu); 

} 

public MenuModel getModel() { 
    return model; 
} 
    } 

これは図である。

<h3>Programmatic Menu </h3> 
<p:menu model="#{menuBean.model}"/>  

私は、パラメータとコントローラのメソッドを呼び出したい、のようなもの:私がしようと

<p:menuitem value="Menu 01" action="#{myController.search()}"> 
     <f:param value="1" name="mypara"/> 
    </p:menuitem> 

:item.addActionListenerを(」 #{myController.search()} ");それは仕事ではありません。 MenuBeanクラスで何ができますか?

答えて

1

Springを使用していますか? これらの統合にはJSF 1.2が使用されているため、コントローラにパラメータを送信する場合は、回避策を講じなければなりません。

私は同じ問題を抱えていたし、私は次の行のように解決:あなたのMenuModelにプロパティを追加しようとすることができ、あなたのケースで

<p:menuitem value="Menu 01" action="#{myController.search}"> 
    <f:setPropertyActionListener target="#{managedBean.myparam}" value="1" /> 
</p:menuitem> 

。そのようなもの:

public class MenuBean { 

... 

private int myParam; 

public int getMyParam() { 
    return myParam; 
} 

public void setMyParam(int myParam) { 
    this.myParam = myParam; 
} 

public void search() { 
    //here you could use the param sending by the view 
    service.find(myParam); 
} 

... 
} 
関連する問題