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的配置
分享到:
相关推荐
RichFaces的JS API也包含了一系列组件相关的API,例如`richfaces.selectOneMenu`,它提供了与富选择菜单组件交互的方法。开发者可以利用这些API来扩展或自定义组件的行为,以满足特定的应用场景需求。 在实际应用中...
4. **rich:popupPanel**:弹出面板组件,可以实现浮窗效果,常用于对话框和下拉菜单。 5. **rich:modalPanel**:模态窗口组件,用于在当前页面上打开一个半透明的覆盖层,突出显示特定内容。 **三、RichFaces与JSF...
Richfaces提供的组件极大地简化了Web应用开发过程中的UI设计工作,使得开发者能够更专注于业务逻辑的实现。通过对上述标签的学习和理解,我们可以更好地利用Richfaces来提升项目的交互性和用户体验。
RichFaces 自动构建树实现 RichFaces 自动构建树实现是基于 Java 语言和 RichFaces 框架的树形结构实现。树形结构在软件系统中非常常见,包括树形菜单的构建、基于二叉树的二分查找法等等。RichFaces 提供了树形...
RichFaces的组件库包括但不限于表格(Table)、面板(Panel)、对话框(Dialog)、菜单(Menu)、表单元素(Form Elements)、数据输入组件(Data Input Components)等。例如,`<rich:calendar>`用于日期选择,`...
在Java Web开发领域,RichFaces是一个强大的AJAX和UI组件库,它为开发者提供了丰富的用户界面功能,使得构建动态、交互式的Web应用程序变得更为简便。此“richfacesDemo”项目是一个在MyEclipse集成开发环境中实现的...
- **value 属性**: 该属性指向一个实现了RichFaces提供的 `TreeNode` 接口的集合对象,即树形结构的数据源。 - **var 属性**: 用于指定循环变量的名字,通常用来访问每个节点的数据。 - **switchType 属性**: 控制树...
1. **动态表格**:使用`<rich:datascroller>`和`<rich:datagrid>`可以创建具有分页和排序功能的数据表,同时通过A4J实现无刷新滚动和过滤。 2. **拖放功能**:利用`<rich:dragSupport>`和`<rich:dropSupport>`实现...
RichFaces包含了一系列预定义的UI组件,如数据网格、下拉菜单、日期选择器、树形结构等,这些组件可以方便地集成到JSF应用中,减少从零开始编写前端代码的工作量。 **5. 依赖管理:** 开发者需要确保正确管理和...
1. **强大的Ajax支持**:通过内置的Ajax支持,RichFaces能够使Web页面实现异步数据交换,提高用户体验。 2. **丰富的UI组件库**:提供了大量易于使用的组件,包括数据表格、日历选择器、树形结构等,帮助快速开发...
1. **核心组件库**:如`richfaces-components-api.jar`和`richfaces-components-ui.jar`,这两个jar包提供了RichFaces框架的基础组件API和实现,包括数据表、下拉菜单、树形结构、日期选择器等富客户端组件。...
- **第8章:富菜单组件** - 展示了用于创建下拉菜单和导航栏等UI元素的组件。 - **第9章:富树组件** - 解释了如何使用树形结构来组织和展示数据。 - **第10章:富拖放组件** - 描述了如何实现拖放操作以提高用户...
这些库文件提供了RichFaces的功能接口和实现。 4. **配置JSF和RichFaces**: - 需要在web.xml文件中配置JSF和RichFaces的上下文参数。例如,设置com.sun.faces.config.ConfigureListener作为监听器,指定RichFaces...
在实际项目中,开发人员通常会利用EXTJS的布局和组件,通过AJAX调用RichFaces服务,实现数据的动态加载和交互,同时利用RichFaces的组件来增强EXTJS界面的功能性和美观度。 综上所述,EXTJS和RichFaces的结合使用,...
RichFaces是由JBoss社区开发并维护的一个开源项目,它提供了一系列高级UI组件,这些组件不仅具备丰富的视觉效果,还能轻松实现复杂的客户端操作,如拖放、树形菜单、模态对话框等。RichFaces最大的优势在于其对Ajax...
然后,`<a4j:outputPanel>`和`<a4j:support>`标签用于实现AJAX更新,当用户交互时(如点击复选框或选择下拉菜单),`calendar`组件会异步重新渲染,提供实时反馈。 在例子中,还有两个`<h:selectBooleanCheckbox>`...
3. **Ajax增强**:RichFaces通过Ajax技术增强JSF组件,实现局部刷新,提升应用程序的响应速度和用户体验。 4. **集成框架**:Seam作为中间层,可以很好地将前端的Ext JS和后端的业务逻辑进行桥接,实现数据的无缝...
在实际应用中,`<rich:tree>`组件还可以与其他RichFaces组件结合,比如`<rich:contextMenu>`,为树节点提供右键菜单,增强用户体验。同时,通过CSS和JavaScript,可以进一步定制组件的样式和交互行为。 总的来说,`...