首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何创建一个**动态** "p:menu“元素的"p:menuitem”元素同时包含"ActionListener“和"Action”属性?

如何创建一个**动态** "p:menu“元素的"p:menuitem”元素同时包含"ActionListener“和"Action”属性?
EN

Stack Overflow用户
提问于 2014-07-22 20:49:37
回答 1查看 848关注 0票数 0

问题:如何创建一个动态的“p:菜单”,该动态“p:菜单”等价于下面的工作静态"p:menu“(其菜单项由 "actionListener”和"action“属性定义)

代码语言:javascript
复制
    (.xhtml)
    -
    -
    -
    <p:menu id="menustatic" >
        <p:menuitem id="menuitemstatic0" value="operationStatic0"  actionListener="#{testController.staticMenuActionListener}" action="#{breadCrumb.navigate('page0')}" />
        <p:menuitem id="menuitemstatic1" value="operationStatic1"  actionListener="#{testController.staticMenuActionListener}" action="#{breadCrumb.navigate('page1')}" />            
    </p:menu>
    -
    -
    -

注意:我知道我可以使用DefaultMenuItem的"setCommand“添加"ActionListener”属性、、"Action“属性.

  • 但是,我不知道如何添加两个属性,比如上面的静态"p:menu“示例。

FWIW,这就是我现在添加一个或另一个属性的方式.

代码语言:javascript
复制
    (.xhtml)
    -
    -
    -
    <p:menu id="menudynamic" model="#{menuController.dynamicMenuModel}"  />  
    -
    -
    -


    (.java)
    -
    -
    -
    dynamicMenuModel = new DynamicMenuModel();
    //dynamicMenuModel.generateUniqueIds();

    DefaultMenuItem item = new DefaultMenuItem();
    item.setId("menuitemdynamic0");
    item.setValue("operationDynamic0");
    item.setCommand("#{testController.dynamicMenuActionListener}");
    //item.setCommand("#{breadCrumb.navigate('page0')}");
    dynamicMenuModel.addElement(item);

    item = new DefaultMenuItem();
    item.setId("menuitemdynamic1");
    item.setValue("operationDynamic1");
    //item.setCommand("#{testController.dynamicMenuActionListener}");
    item.setCommand("#{breadCrumb.navigate('page1')}");
    dynamicMenuModel.addElement(item);
    -
    -
    -

ActionListener方法看起来像这样..。

代码语言:javascript
复制
public void staticMenuActionListener(ActionEvent e)
{
    LOG.info("___________________staticMenuActionListener(ActionEvent e)___________________entering....(static)....e.getComponent().getClientId()=" + e.getComponent().getClientId());
}

public void dynamicMenuActionListener(ActionEvent e)
{
    MenuActionEvent me = (MenuActionEvent) e;        
    LOG.info("___________________dynamicMenuActionListener(ActionEvent e)___________________entering....(dynamic)....me.getMenuItem().getClientId()=" + me.getMenuItem().getClientId());
}

下面是我用来构建这个测试的一些相关依赖项..。

代码语言:javascript
复制
    <dependency>  
        <groupId>org.primefaces.themes</groupId>  
        <artifactId>all-themes</artifactId>  
        <version>1.0.9</version>  
    </dependency>  
    <dependency>
        <groupId>org.primefaces</groupId>
        <artifactId>primefaces</artifactId>
        <version>5.0</version>
    </dependency>
    <dependency>
        <groupId>org.primefaces.extensions</groupId>
        <artifactId>primefaces-extensions</artifactId>
        <version>2.0.0</version>
    </dependency>           
    <dependency>
        <groupId>com.sun.faces</groupId>
        <artifactId>jsf-impl</artifactId>
        <version>2.1.28</version>
    </dependency>
    <dependency>
        <groupId>com.sun.faces</groupId>
        <artifactId>jsf-api</artifactId>
        <version>2.1.28</version>
    </dependency>
    <dependency>
        <groupId>javax.el</groupId>
        <artifactId>el-api</artifactId>
        <version>2.2</version>
    </dependency>

用JDK1.6.x (weblogic12c)编译

谢谢你帮忙!

EN

回答 1

Stack Overflow用户

发布于 2014-07-24 08:00:57

对于导航,可以使用item.setOutcome或item.setUrl方法。

关于操作,如果需要在ajax或非ajax命令中传递参数,请使用setParam(key,value)方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24897565

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档