f:p:menu(Primefaces)中项目的setPropertyActionListener

时间:2011-06-17 06:45:07

标签: java jsf primefaces

您能告诉我如何使用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}"/>  

2 个答案:

答案 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);