1. 环境
JDK 1.6, JSF 1.2, Richfaces 3.2.2 GA, JSTL 1.2, Tomcat 6.0
2. 实现
Backing Bean:
package com.apple.www.beans;
import java.util.ArrayList;
import java.util.List;
public class DynamicMenuBean {
public class FakeData {
private String label;
private String icon;
private String action;
public String getLabel() {
return label;
}
public void setLabel(String label) {
this.label = label;
}
public String getIcon() {
return icon;
}
public void setIcon(String icon) {
this.icon = icon;
}
public String getAction() {
return action;
}
public void setAction(String action) {
this.action = action;
}
public FakeData(String label, String icon, String action) {
this.label = label;
this.icon = icon;
this.action = action;
}
}
private String currentAction;
public void setCurrentAction(String currentAction) {
this.currentAction = currentAction;
}
public String getCurrentAction() {
return currentAction;
}
public List getFakeData() {
// 从数据库或其他地方获取动态菜单的List
List<FakeData> fakeData = new ArrayList<FakeData>();
fakeData.add(new FakeData("menu1", "icon1", "action1"));
fakeData.add(new FakeData("menu2", "icon2", "action2"));
fakeData.add(new FakeData("menu3", "icon3", "action3"));
fakeData.add(new FakeData("menu4", "icon4", "action4"));
fakeData.add(new FakeData("menu5", "icon5", "action6"));
return fakeData;
}
public String excuteMenuAction() {
// TODO Something here
return currentAction;
}
}
JSP Page:
<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<%@taglib uri="https://ajax4jsf.dev.java.net/ajax" prefix="a4j"%>
<%@taglib uri="http://richfaces.ajax4jsf.org/rich" prefix="rich"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<---------------省略--------------->
<rich:dropDownMenu value="Popup">
<c:forEach items="#{dynamicMenuBean.fakeData}" var="menu">
<rich:menuItem icon="#{menu.icon}" value="#{menu.label}" immediate="true"
action="#{dynamicMenuBean.excuteMenuAction}" submitMode="server">
<f:setPropertyActionListener target="#{dynamicMenuBean.currentAction}"
value="#{menu.action}" />
</rich:menuItem>
</c:forEach>
</rich:dropDownMenu>
<---------------省略--------------->
PS: 略去Backing bean和navigation的配置
JSF动态菜单实现
本文介绍了一种使用JavaServer Faces (JSF) 和 RichFaces 实现动态下拉菜单的方法。通过自定义的 Backing Bean 控制菜单项的数据,并在 JSP 页面上利用 JSTL 和 RichFaces 组件进行展示。
2755

被折叠的 条评论
为什么被折叠?



