您能告诉我如何使用jsf中的Primefaces为程序菜单添加f:setPropertyActionListener
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);
//Second submenu
submenu = new Submenu();
submenu.setLabel("Dynamic Submenu 2");
item = new MenuItem();
item.setValue("Dynamic Menuitem 2.1");
item.setUrl("#");
submenu.getChildren().add(item);
item = new MenuItem();
item.setValue("Dynamic Menuitem 2.2");
item.setUrl("#");
submenu.getChildren().add(item);
model.addSubmenu(submenu);
}
和
<p:menu model="#{menuBean.model}"/>
答案 0 :(得分:0)
要以编程方式执行此操作,它非常简单:
MenuItem item = new MenuItem();
item.addActionListener(listener);
我误解了你的问题吗?
答案 1 :(得分:0)
import javax.faces.event.ActionListener;
import com.sun.faces.taglib.jsf_core.SetPropertyActionListenerImpl;
...
//setPropertyActionListener
ValueExpression target = expFact.createValueExpression(elCtx, "#{TesterBean.someProperty}", String.class);
ValueExpression value = expFact.createValueExpression(strProperty, String.class);
ActionListener handler = new SetPropertyActionListenerImpl( target , value );
newCommandLink.addActionListener(handler);