主要是使用<layout:accordionLayout/>控件实现效果,话不多说,直接上代码:
<f:view xmlns="http://www.w3.org/1999/xhtml" xmlns:f="http://java.sun.com/jsf/core"
xmlns:w="http://www.apusic.com/jsf/widget" xmlns:layout="http://www.apusic.com/jsf/layout"
xmlns:h="http://java.sun.com/jsf/html" xmlns:ajax="http://www.apusic.com/jsf/ajax"
xmlns:ui="http://java.sun.com/jsf/facelets" renderKitId="AJAX">
<w:head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<w:stylesheet src="resources/css/style.css"></w:stylesheet>
</w:head>
<w:page title="Insert title here">
<layout:borderLayout fitToBody="true">
<layout:panel region="north" autoHeight="true" border="false">
<ui:include src="header.xhtml"></ui:include>
</layout:panel>
<layout:panel region="west" width="200" title="菜单" split="true" border="false" collapsible="true">
<layout:accordionLayout id="layout" animate="true" fit="true" border="false"></layout:accordionLayout>
</layout:panel>
<layout:panel region="center" title="center" fit="true">
<w:iframe style="width: 100%; height: 100%" id="frame" src="workspace.xhtml" name="content" frameborder="no" />
</layout:panel>
<layout:panel region="south" autoHeight="true" border="false">
<ui:include src="footer.xhtml" />
</layout:panel>
</layout:borderLayout>
</w:page>
</f:view>
package com.ahsl.index;
import java.util.List;
import javax.faces.application.Application;
import javax.faces.component.html.HtmlGraphicImage;
import javax.faces.component.html.HtmlOutputLink;
import javax.faces.component.html.HtmlOutputText;
import javax.faces.context.FacesContext;
import org.operamasks.faces.annotation.BeforeRender;
import org.operamasks.faces.annotation.Bind;
import org.operamasks.faces.annotation.Inject;
import org.operamasks.faces.annotation.ManagedBean;
import org.operamasks.faces.annotation.ManagedBeanScope;
import org.operamasks.faces.component.layout.impl.UIAccordionLayout;
import org.operamasks.faces.component.layout.impl.UIPanel;
import com.ahsl.index.enities.Function;
import com.ahsl.index.enities.Functiontype;
import com.ahsl.index.service.IFunctionService;
import com.ahsl.index.service.IFunctiontypeService;
@ManagedBean(name = "AccordionLayoutBean", scope = ManagedBeanScope.REQUEST)
public class AccordionLayoutBean {
@Inject(value="functionSpringService")
private IFunctionService fs;
@Inject(value="functiontypeSpringService")
private IFunctiontypeService fts;
@Bind
private UIAccordionLayout layout;
@BeforeRender
public void beforeRender(boolean isPostback) {
FacesContext context = FacesContext.getCurrentInstance();
Application app = context.getApplication();
List<Functiontype> ftlist=fts.findAll();
for (Functiontype ft:ftlist) {
UIPanel panel = (UIPanel) app
.createComponent(UIPanel.COMPONENT_TYPE);
panel.setTitle(ft.getName());
List<Function> flist=fs.findByTypeID(ft.getUid());
for (Function fun:flist) {
HtmlOutputLink hOL = (HtmlOutputLink) app
.createComponent(HtmlOutputLink.COMPONENT_TYPE);
hOL.setValue(fun.getFunCode());
hOL.setTarget("content");
hOL.setStyle("color: #0078C2;text-decoration: none;margin: 6px 3px;font-size: 14px;font-weight: bold;");
// 显示图标
// if (hnode.getImage() != null) {
// HtmlGraphicImage image = (HtmlGraphicImage) app
// .createComponent(HtmlGraphicImage.COMPONENT_TYPE);
// image.setUrl(hnode.getImage());
// image.setStyle("margin: 0px 10px;");
// hOL.getChildren().add(image);
// }
// 显示文字
HtmlOutputText text = (HtmlOutputText) app
.createComponent(HtmlOutputText.COMPONENT_TYPE);
String txt = fun.getName() + "<br/>";
text.setValue(txt);
text.setEscape(false);
hOL.getChildren().add(text);
panel.getChildren().add(hOL);
}
layout.getChildren().add(panel);
}
}
}
其中funciton和functiontype是多对一得关系。。。。。这我就不多说了想必大家也都能理解。。效果见附件。

- 大小: 212.8 KB
分享到:
相关推荐
本篇文章将详细探讨如何利用JSF与Hibernate相结合来实现批量删除功能,以及在CRUD(创建、读取、更新和删除)操作中的应用。 首先,我们需要理解JSF的工作原理。JSF是一个基于组件的MVC(Model-View-Controller)...
在JavaServer Faces (JSF)框架中,实现全选功能通常是通过使用BooleanCheckbox组件来完成的。这篇博客文章“JSF中使用BooleanCheckbox实现全选功能”可能详细讲解了如何利用这种组件在用户界面中创建一个可以勾选的...
"并有下拉菜单" 表明该示例项目中包含了一个使用JSF实现的下拉菜单组件。在JSF中,下拉菜单通常由`h:selectOneMenu`标签实现,它可以动态加载选项,这在数据绑定和用户交互中十分常见。这种组件可以结合Spring的数据...
在实际开发中,开发者可以根据项目需求、团队熟悉度、性能要求以及对最新特性的需求来决定使用哪个JSF实现。例如,如果你的项目需要最新的JSF特性,那么官方实现可能是首选;如果重视开源社区的贡献和自定义组件,...
在这个"jsf实现登录功能"的例子中,我们将探讨如何利用JSF来构建一个基本的用户登录系统。 首先,登录功能通常包括两部分:前端页面和后端逻辑。在JSF中,前端页面通常由XHTML文件(.xhtml)组成,这些文件结合了...
**JSF 文件下载实现** 在JavaServer Faces (JSF)框架中,实现文件下载功能是一项常见的需求。在本文中,我们将深入探讨如何使用JSF来实现在Web应用程序中下载文件的功能。主要涉及的关键知识点包括: 1. **JSF上...
POI读取并导出Excel(JSF Bean 页面的实现) 概述 本文将介绍如何使用POI库在JSF Bean页面中读取和导出Excel文件。通过该实现,可以实现下载地址的可选性,而不是写死的固定地址。 相关知识点 1. POI库的使用:...
首先,JSF是一个用于构建MVC(模型-视图-控制器)结构的Java EE框架,它允许开发者创建动态、交互式的Web应用。JSF的核心组件包括Facelets,这是一个模板语言,用于定义用户界面;以及Managed Beans,它们是业务逻辑...
JavaServer Faces(JSF)是Java平台上用于构建用户界面的Web应用程序框架,它提供了一种组件化、事件驱动的方式来创建动态、交互式的Web应用。Sun Microsystems(后来被Oracle收购)是JSF规范的主要推动者和实现者。...
【JSF自定义组件实现详解】 在JavaServer Faces (JSF)框架中,自定义组件允许开发者根据项目需求创建具有特定功能的UI元素。本文将引导你逐步了解如何在JSF中实现一个自定义组件,从基础开始,一步步构建一个简单的...
在这个名为"JSF树型菜单.rar"的压缩包中,包含了一个关于如何在JSF应用中实现树型菜单的案例源码。树型菜单是一种常见的UI组件,用于展示层次结构的数据,比如文件系统、组织结构或网站导航。 树型菜单在JSF中的...
JSF(JavaServer Faces)是一种用于构建Web应用程序的Java技术,它提供了一种声明式的方式来创建用户界面,并处理用户交互。在这个"用jsf做的登录注册的组件"中,我们可能会涉及以下几个关键知识点: 1. **JSF架构*...
JSF2.xdatatable分页控件与左侧菜单最简单应用 JSF2.x,功能强大,使用方便。全世界使用JSF的人越来越多。而且也有很多很好的控件给发出来了,如:richfaces、primefaces、myfaces等,就日前来讲primefaces功能...
**JSF 2 规范的标准参考实现** JavaServer Faces(JSF)是Java平台上的一个用于构建Web应用程序的MVC(Model-View-Controller)框架。JSF 2是该框架的一个重大更新,带来了许多增强功能和改进,旨在提高开发效率、...
在这个"JSF实现的CRUD例子 myeclipse"中,我们将探讨如何使用JSF和MyEclipse开发一个简单的CRUD(Create, Read, Update, Delete)应用,而无需连接到数据库。 首先,"first-java-server-faces-tutorial-en.pdf"可能...
jsf结合ajax实现文件上传,值得阅读
在这个“jsf实现多语言国际化demo”中,我们将深入探讨如何在 JSF 应用程序中实现这一特性。 首先,我们需要创建一个资源库,存储各种语言的文本。在 JSF 中,通常使用 `.properties` 文件来存储这些资源。例如,...
标题:“jsf 实现” 描述:“国内比较好的jsf1.2实现,并且和ajax结合” 根据提供的标题、描述和部分未解析的内容,我们可以总结出关于JSF(JavaServer Faces)1.2版本的一些关键知识点,尤其是其在国内的实现与...
在这个项目中,MySQL被用作存储数据的后端,配合JSF实现数据的读取和分页显示。 综上所述,这个JSF分页实现项目涵盖了Web开发中的多个重要方面,包括前端界面的组件化设计、后端数据的分页处理、数据库操作以及Java...
在这个"jsf实现增删改查的一个简单例子"中,开发者使用了JSF 2.2版本,这是一个功能丰富的更新,包括对CDI(Contexts and Dependency Injection)的更好支持,以及更多的性能优化和用户体验改进。 JSF 2.2的核心...