动作列表中的Struts2 jQuery UI动态菜单

时间:2013-11-25 13:22:45

标签: java jquery-ui jsp struts2 struts2-jquery

如何生成动态菜单&从Action生成的列表中的菜单项? 我试过这种方法,但它只生成主菜单而不是子菜单。

动作类:

private List<String> menuList = new ArrayList<String>();
public String execute(){
    menuList.add("Menu1");
    menuList.add("Menu2");
    menuList.add("Menu3");
    menuList.add("Menu4");
    return "success";
}
public List<String> getMenuList() {
    return menuList;
}
public void setMenuList(List<String> menuList) {
    this.menuList = menuList;
}

JSP:

<sj:menu cssStyle="width:50%" list="menuList" />

如何通过菜单项获取菜单?

示例类结构。

public class Menu {
    private String id;
    private List<MenuItem> menuItems;

    public Menu(String id, List<MenuItem> menuItems){
        this.id = id;
        this.menuItems = menuItems;
    }

    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public List<MenuItem> getMenuItems() {
        return menuItems;
    }
    public void setMenuItems(List<MenuItem> menuItems) {
        this.menuItems = menuItems;
    }   

}


public class MenuItem {
    private String title;
    private String href;
    private Menu menu;  // submenu

    public MenuItem(String title, String href, Menu menu){
        this.title = title;
        this.href = href;
        this.menu = menu;
    }

    public String getTitle() {
        return title;
    }
    public void setTitle(String title) {
        this.title = title;
    }
    public String getHref() {
        return href;
    }
    public void setHref(String href) {
        this.href = href;
    }
    public Menu getMenu() {
        return menu;
    }
    public void setMenu(Menu menu) {
        this.menu = menu;
    }   

}

如何使用sj:menu标记在JSP页面中配置它?

2 个答案:

答案 0 :(得分:0)

看一下struts2 (link)

的iterator标签

它将java.util.Collection作为输入,迭代其值。

答案 1 :(得分:0)

sj:menu代码会根据列表值生成一个菜单,以创建您应在sj:menuItem代码正文中使用sj:menu的子菜单。同样在sj:menuItem的正文中,您可以使用sj:menu标记。您可以找到here的详细说明和示例。