首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在ace:menuButton组件中绑定ace:menuItem

如何在ace:menuButton组件中绑定ace:menuItem
EN

Stack Overflow用户
提问于 2014-06-02 20:16:26
回答 1查看 271关注 0票数 0

在我的Icefaces 3应用程序中,我有一个下拉菜单。我想动态地填充它。在我的ManagedBean中,我有一个定义menuItem的方法。它获取label和actionMethod,并在MenuItem上对它们进行估值。当我启动我的应用程序时,下拉菜单项总是空的。

ManagedBean:

代码语言:javascript
复制
package com.omb.view;

import java.io.Serializable;

import javax.el.MethodExpression;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

import com.icesoft.faces.component.menubar.MenuItem;

@Controller
@Scope("session")
public class MyBean implements Serializable {

    private static final Log logger = LogFactory.getLog(MyBean.class);

    private MenuItem menuItem1;

    public String initMyBean() {

        try {
            initMenuItem();
        } catch (Exception e) {
            logger.error(e.getMessage(), e);
        }
    }

    private void initMenuItem() {

        menuItem1 = new MenuItem();
        menuItem1.setValue("Menu 1");

        MethodExpression actionExpression = FacesUtils.createAction("#{menu1Bean.display}", String.class);
        menuItem1.setActionExpression(actionExpression);

    }

    public MenuItem getMenuItem1() {
        return this.menuItem1;
    }

    public void setMenuItem1(MenuItem menuItem1) {
        this.menuItem1 = menuItem1;
    }

}

FaceUtils

代码语言:javascript
复制
package com.omb.view;

import javax.el.MethodExpression;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.faces.event.MethodExpressionActionListener;

/**
 * JSF utilities.
 */
public class FacesUtils {

    public static MethodExpression createAction(String actionExpression, Class<?> returnType) {
        FacesContext context = FacesContext.getCurrentInstance();
        return context.getApplication().getExpressionFactory()
                .createMethodExpression(context.getELContext(), actionExpression, returnType, new Class[0]);
    }

    public static MethodExpressionActionListener createActionListener(String actionListenerExpression) {
        FacesContext context = FacesContext.getCurrentInstance();
        return new MethodExpressionActionListener(context
                .getApplication()
                .getExpressionFactory()
                .createMethodExpression(context.getELContext(), actionListenerExpression, null,
                        new Class[] {ActionEvent.class}));
    }
}

screen.xhtml

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets">

<body>
    <ui:composition>
        <ice:form id="headerForm" xmlns:h="http://java.sun.com/jsf/html"
            xmlns:f="http://java.sun.com/jsf/core"
            xmlns:ice="http://www.icesoft.com/icefaces/component"
            xmlns:ace="http://www.icefaces.org/icefaces/components"
            xmlns:c="http://java.sun.com/jstl/core"
            xmlns:ui="http://java.sun.com/jsf/facelets">

            <div class="menu">
                <ace:menuButton id="menuButton" effect="slide" effectDuration="200" value="Menu Button">
                    <ace:menuItem binding="#{myBean.menuItem1}"/>
                </ace:menuButton>

            </div>
        </ice:form>
    </ui:composition>
</body>
</html>
EN

回答 1

Stack Overflow用户

发布于 2014-06-12 15:45:02

最后我使用了一个标准的解决方案:

代码语言:javascript
复制
<ace:menuButton id="menuButton" effect="slide" effectDuration="200" value="Menu Button">
       <ace:menuItem value="Menu 1" action="#{myBean.display}"/>
</ace:menuButton>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23994374

复制
相关文章

相似问题

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