主要是使用<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标准的实现框架,一个是JSF2.0的官方实现,一个是JSF2.2的Apache MyFaces实现。
这是一个使用jsf框架实现简易登录功能的小例子,对于初学者可以参考一下。
JSF2.xdatatable分页控件与左侧菜单最简单应用 JSF2.x,功能强大,使用方便。全世界使用JSF的人越来越多。而且也有很多很好的控件给发出来了,如:richfaces、primefaces、myfaces等,就日前来讲primefaces功能...
jsf后台 + primefaces (html,css,javascript)前端实现网盘技术网页源代码。
jsf结合ajax实现文件上传,值得阅读
最近学习JSF,但资料较少,国内学习的人不多,自己摸索,采用JSF2.2、Hibernate5.0实现的一个JSF例子,简单实现了增删改查,尚未实现分页
NULL 博文链接:https://sailinglee.iteye.com/blog/429696
sun的jsf接口和实现的源文件下载,也可以在玻璃鱼项目中下载到!
一步一步教你如何在jsf中自定义组件,简单易学,有程序完整代码。通过这个小demo你可以进一步开发复杂的组件。
包中包括jsf-api.jar 和jsf-impl.jar两个JSF 2的参考实现
jsf1.2+ejb3.0实现的员工管理系统,做成了部分:一部分是ejb端,实现业务逻辑;另一部分是web端,实现web浏览。通过这个实例,你可以学会用jsf1.2和ejb3去做企业项目。内附源代码、分析和部署文档。
spring+Jsf+hibernate集成实例,并有下拉菜单
jsf实现多语言国际化demo
JSF实现的CRUD例子 myeclipse,未用数据库,加载到myeclipse里可以直接在tomcat里运行
jsf实例 JSF学习 JSF jar包 JSF jsf实例 JSF学习 JSF jar包 JSFjsf实例 JSF学习 JSF jar包 JSF jsf实例 JSF学习 JSF jar包 JSF
jsf 分页 jsf 分页 jsf 分页 jsf 分页
JSF实现文件的下载功能 public static void downloadFile(String path,String fileName) { try { // 获得JSF上下文环境 FacesContext context = FacesContext.getCurrentInstance(); // 获得ServletContext...
JSF JSF2.0 Ajax javaweb JSF与Ajax交互实现
国内比较好的jsf1.2实现,并且和ajax结合