化了好长时间研究这个东东,现在拿出来给大家分享,希望对大家有用。
Menu实体类
@Entity
public class MyMenu implements Serializable {
private Long id;
private String type;
private String menuid;
private String pmenuid;
private String viewlabel;
private String link;
//getter and setter
...
}
Menu的Action
public class SimplePanelMenuAction {
@In(required = false)
private EntityManager entityManager;
@In(required = false)
@Out(required = false)
private MenuState menuState;
HtmlPanelMenu panelMenu;
public MenuState getMenuState() {
return menuState;
}
public void setMenuState(MenuState menuState) {
this.menuState = menuState;
}
public void select(ActionEvent event) {
menuState.setSelectedMenuItem(event.getComponent().getId());
}
private void loadMenu() {
panelMenu = new HtmlPanelMenu();
FacesContext facesContext = FacesContext.getCurrentInstance();
Class[] params = { ActionEvent.class };
Map<String, Boolean> menu = new HashMap<String, Boolean>();
ActionListener actl= new MethodExpressionActionListener(Expressions.instance().createMethodExpression("#{simplePanelMenu1.select}", Void.TYPE, params).toUnifiedMethodExpression());
List<MyMenu> mymenugrops = entityManager
.createQuery(
"select m from MyMenu m where m.type = 'G' and m.pmenuid = '000000'")
.getResultList();
for (MyMenu mymenugrop : mymenugrops) {
HtmlPanelMenuGroup panelGroup = new HtmlPanelMenuGroup();
panelGroup.setId(mymenugrop.getViewlabel());
panelGroup.setName(mymenugrop.getViewlabel());
panelGroup.setLabel(mymenugrop.getViewlabel());
menu.put(panelGroup.getId(), false);
List<MyMenu> submymenugrops = entityManager
.createQuery(
"select m from MyMenu m where m.type = 'G' and m.pmenuid = :p1")
.setParameter("p1", mymenugrop.getMenuid()).getResultList();
for (MyMenu submymenugrop : submymenugrops) {
HtmlPanelMenuGroup subpanelGroup = new HtmlPanelMenuGroup();
subpanelGroup.setId(submymenugrop.getViewlabel());
subpanelGroup.setName(submymenugrop.getViewlabel());
subpanelGroup.setLabel(submymenugrop.getViewlabel());
List<MyMenu> mymenuitems = entityManager
.createQuery(
"select m from MyMenu m where m.type = 'I' and m.pmenuid = :p1")
.setParameter("p1", submymenugrop.getMenuid())
.getResultList();
for (MyMenu mymenuitem : mymenuitems) {
HtmlPanelMenuItem subpanelMenuItem = new HtmlPanelMenuItem();
subpanelMenuItem.setId(mymenuitem.getViewlabel());
subpanelMenuItem.setName(mymenuitem.getViewlabel());
subpanelMenuItem.setLabel(mymenuitem.getViewlabel());
subpanelMenuItem.addActionListener(actl);
subpanelMenuItem
.setActionExpression(Expressions.instance().createMethodExpression(mymenuitem.getLink()).toUnifiedMethodExpression());
subpanelGroup.getChildren().add(subpanelMenuItem);
}
panelGroup.getChildren().add(subpanelGroup);
}
List<MyMenu> mymenuitems = entityManager
.createQuery(
"select m from MyMenu m where m.type = 'I' and m.pmenuid = :p1")
.setParameter("p1", mymenugrop.getMenuid()).getResultList();
for (MyMenu mymenuitem : mymenuitems) {
HtmlPanelMenuItem panelMenuItem = new HtmlPanelMenuItem();
panelMenuItem.setId(mymenuitem.getViewlabel());
panelMenuItem.setName(mymenuitem.getViewlabel());
panelMenuItem.setLabel(mymenuitem.getViewlabel());
panelMenuItem.addActionListener(actl);
panelMenuItem
.setActionExpression(Expressions.instance().createMethodExpression(mymenuitem.getLink()).toUnifiedMethodExpression());
panelGroup.getChildren().add(panelMenuItem);
}
panelGroup.setValueExpression("value",Expressions.instance().createValueExpression("#{simplePanelMenu.menuState.menu['"+panelGroup.getLabel()+"']}").toUnifiedValueExpression());
panelMenu.getChildren().add(panelGroup);
menu.put(panelGroup.getLabel(), false);
}
menuState.setMenu(menu);
}
public HtmlPanelMenu getPanelMenu() {
if (panelMenu == null) {
loadMenu();
}
return panelMenu;
}
public void setPanelMenu(HtmlPanelMenu panelMenu) {
this.panelMenu=panelMenu;
}
@Remove
public void destroy() {
}
}
用于保存菜单状态的Bean
private Map <String, Boolean> menu;
@In(required=false)
@Out(required=false)
private String selectedMenuItem;
public String getSelectedMenuItem() {
return selectedMenuItem;
}
public Map<String, Boolean> getMenu() {
return menu;
}
public void setMenu(Map<String, Boolean> menu) {
this.menu = menu;
}
public void setSelectedMenuItem(String selectedMenuItem) {
this.selectedMenuItem = selectedMenuItem;
}
public MenuState() {
}
}
页面:
<rich:panelMenu id="panelmenu" binding="#{simplePanelMenu.panelMenu}" style="width:185px"
selectedChild="#{simplePanelMenu.menuState.selectedMenuItem}"
iconExpandedGroup="disc"
iconCollapsedGroup="disc"
iconExpandedTopGroup="chevronUp"
iconGroupTopPosition="right"
iconCollapsedTopGroup="chevronDown"
iconCollapsedTopPosition="right" >
</rich:panelMenu>
<h1>This is TEST2</h1>
分享到:
相关推荐
《RichFaces 3.3.3 标签库手册》是针对富客户端开发的重要参考资料,主要涵盖RichFaces组件库在3.3.3版本中的各种功能标签及其使用方法。这本手册以HTML化的方式呈现,方便开发者查阅和理解,旨在为JavaServer Faces...
在本文中,我们将深入探讨 RichFaces 标签的使用,特别是 `rich:componentControl` 和 `rich:modalPanel` 标签,以及 `inputNumberSlider` 和...通过熟练掌握这些标签和组件,你可以创建出用户体验极佳的网页应用程序。
`rich:panelMenu`标签用于创建下拉菜单,类似于Windows系统的下拉菜单。 **示例代码:** ```xml <rich:panelMenu style="width:200px" mode="ajax" iconExpandedGroup="disc" iconCollapsedGroup="disc" ...
RichFaces 4.5 是一个强大的JavaServer Faces (JSF) 框架的扩展库,专为构建富互联网应用程序(Rich Internet Applications, RIA)而设计。这个库提供了丰富的组件集,以及对JavaScript(JS)和Java API的支持,使得...
RichFaces是一个开源框架,专注于将Ajax功能无缝集成到JavaServer Faces(JSF)应用程序中,无需依赖JavaScript。这个框架充分利用了JSF的生命周期、验证、转换工具以及资源管理功能。它提供的Ajax支持是完全集成到...
《Java JSF Richfaces在办公自动化系统中的应用详解》 在现代企业信息化建设中,办公自动化系统的开发与应用已经成为提升工作效率、实现管理现代化的关键。本文将深入探讨如何利用Java、JSF(JavaServer Faces)...
RichFaces 是一个开源项目,它扩展了 JSF 的功能,提供了大量的可重用 UI 组件,以及对 AJAX(异步 JavaScript 和 XML)技术的支持,使得开发人员能够构建高度交互性和动态的 Web 应用程序。 **描述解析:** ...
- "richfaces":这是 RichFaces 的标签,它是一个开源的 JavaServer Faces (JSF) 扩展框架,主要用于构建富互联网应用程序(Rich Internet Applications, RIA)。它提供了丰富的UI组件和Ajax功能。 - "richfaces3.3...
RichFaces是面向JavaServer Faces(JSF)的增强型框架,其主要优势在于无需依赖JavaScript即可为现有的JSF应用程序添加Ajax功能。它充分利用了JSF的生命周期、验证、转换等机制,通过内置的Ajax支持,极大地简化了...
在Java的富客户端框架(RichFaces)中,`rich:componentControl`标签和`rich:modalPanel`标签是两个非常重要的组件,它们用于创建交互式的用户界面。`rich:componentControl`标签允许开发者通过AJAX操作来控制其他组件...
Java Web标签大全涵盖了许多用于构建动态Web应用程序的关键技术,这些技术包括Struts 2、Struts 1(Bean、HTML和Logic标签)、JSTL、JSP、Spring以及AJAX。下面将对这些标签和框架进行详细介绍。 1. **Struts 2标签...
这是用richfaces3.1写的一个学习笔记。需要的看看 在jboss4.2下运行正常。 在tomcat中如果抛异常。 是因为jar包不一样导致的。可以给我发留言。我给你完整包 liucheng418@163.com
【richfaces标签例子】是关于JavaServer Faces (JSF)框架中RichFaces组件库的使用教程,主要展示了如何在Web应用程序中实现一个日历组件。RichFaces是一个强大的UI组件库,它扩展了JSF的功能,提供了许多富互联网...
**标签解析:** "richfaces jsf" 这两个标签进一步明确了主题,RichFaces是基于JSF框架的,JSF是一个用于构建Web应用程序的Java标准,它提供了一种声明式的方式来创建用户界面。标签中的"jsf"提醒我们RichFaces是JSF...
**richfaces-showcase.war** 是一个Web应用程序的归档文件,通常用于部署在像Tomcat这样的Java应用服务器上。这个war文件包含了Richfaces ShowCase的全部源代码和资源,包括HTML、CSS、JavaScript、Java类以及相关的...
Java Web JSF + Richfaces + EJB + JPA 航空订票系统是一个综合性的应用,涵盖了多种Java技术,用于构建高效的、可扩展的、易于维护的Web应用程序。在这个系统中,每项技术都有其特定的角色和功能,共同协作以实现...