你可以试试下面的代码:希望对你有帮助-
菜单项的数据由 MenuItem 类表示
public class MenuItem {
private int id;
private String label;
public MenuItem(String label, int id) {
super();
this.label = label;
this.id = id;
}
public int getId() {
return this.id;
}
public String getLabel() {
return this.label;
}
public void setId(int id) {
this.id = id;
}
public void setLabel(String label) {
this.label = label;
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("MenuItem [id=");
builder.append(this.id);
builder.append(", label=");
builder.append(this.label);
builder.append("]");
return builder.toString();
}
}
DynamicMenu 类支持动态菜单。它提供了菜单项列表和一个操作方法:
import java.util.ArrayList;
import java.util.List;
import org.apache.log4j.Logger;
import org.jboss.seam.annotations.Name;
@Name("dynMenu")
public class DynamicMenu {
private Logger log = Logger.getLogger(DynamicMenu.class.getName());
public void action(int id) {
log.info("Action called with menu item id: " + id);
}
public List<menuitem> getMenuItems() {
List<menuitem> menuItems = new ArrayList<menuitem>();
menuItems.add(new MenuItem("Menu Item #1", 1));
menuItems.add(new MenuItem("Menu Item #2", 2));
menuItems.add(new MenuItem("Menu Item #3", 3));
return menuItems;
}
}
以下代码 sn -p 包含动态菜单 xhtml 示例。动态菜单项中的关键是<c:forEach> 迭代器。命名空间声明很重要,应该是xmlns:c="http://java.sun.com/jstl/core"。如果你使用xmlns:c="http://java.sun.com/jsp/jstl/core"命名空间,迭代器将不起作用!
<h:form xmlns:h="http://java.sun.com/jsf/html">
<rich:dropDownMenu value="Dynamic Menu Item Example" style="text-decoration:none;">
<c:forEach xmlns:c="http://java.sun.com/jstl/core" var="item"
items="#{dynMenu.getMenuItems()}">
<rich:menuItem id="menuItem#{item.id}" submitMode="ajax"
value="#{item.label}" action="#{dynMenu.action(item.id)}">
</rich:menuItem>
</c:forEach>
</rich:dropDownMenu>
</h:form>