JSF2.xdatatable分页控件与左侧菜单最简单应用


   JSF2.xdatatable分页控件与左侧菜单最简单应用


  JSF2.x,功能强大,使用方便。全世界使用JSF的人越来越多。而且也有很多很好的控件给发出来了,如:richfaces、primefaces、myfaces等,就日前来讲primefaces功能很强大,控件很多,但有一点不好就是不支持IE6,特别是下拉列表,p:dialog等,其它的分页p:datatable实际使用起来总有不如意的地方。richfaces还支持可视化开发,可惜就是控件开发进度相比其它的慢了很多。下面帖我的控件的使用方法:

  下载地址:http://download.csdn.net/detail/ptianfeng/4816928


一、分页具体使用方法如下(不多说,直接给你些颜色看看):

1. xhtml文件: 

  <html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ems="http://www.ems.com.cn"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets">


            <h:dataTable id="tableId" value="#{userlogMBean.defaultDataModel}"
                    var="var" rows="10">
                    <h:column>
                        <f:facet name="header">
                            <h:outputText value="" />
                        </f:facet>
                        <h:outputText value="#{var.sqlid}" style="display:none;" />
                    </h:column>
                 
                </h:dataTable>
                <ems:page id="pageId" for="tableId" maxPage="5" />


2. 相应的Managedbean:

/** 
 *   EMS 11185 限时未达邮费奉还
 * @author 螃蟹
 */
@SuppressWarnings(value = "serial")
@ManagedBean(name = "userlogMBean")
@ViewScoped()
public class UserlogMBean extends PageListBaseBean implements Serializable {
	
	public PagedListDataModel getDefaultDataModel() {
		if (defaultDataModel == null) {
			defaultDataModel = new PagedListDataModel(pageSize) {
				public DataPage fetchPage(int startRow, int pageSize) {
					ArrayList<UserlogVo> dataList = new ArrayList<UserlogVo>();
					List<Userlog> list = dao.getObjectList(jpql, pageSize,
							startRow);
					if (list != null) {
						for (Userlog u : list) {
							UserlogVo vo = new UserlogVo();
							vo.setSqlid(u.getSqlid());
							vo.setCode(u.getCode());
							vo.setDate(u.getDate());
							vo.setStation(u.getStation());
							vo.setUserid(u.getUserid());
							vo.setText(u.getText());
							dataList.add(vo);
						}
					}
					int size = dao.getCountOption(jpql);
					DataPage dataPage = new DataPage(size, startRow, dataList);
					return dataPage;
				}
			};
		}
		return defaultDataModel;
	}
}


    提示:关于PageListBaseBean更多的信息,可以参阅我在百度的blog(百度改版后,让我很QF,所以转到CSDN来了):

http://hi.baidu.com/kittopang/item/19af4e37c6ede2fae6bb7a11

  至此,分页已经实现。下面是使用截图:




二、左侧菜单:

      1. xhtml文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:e="http://www.ems.com.cn">
    
<h:head>

</h:head>
<ui:composition>
    <h:form id="menuFormId">
        <div style="text-align:center; width:220px; height:500px; border-right-style:solid; border-right-color: Green; border-right-width: 2px; ">
            <f:facet name="header">
                <h:outputText value="系统功能菜单"  style="font-size: 18px"/>
            </f:facet>
            <h:commandButton action="users" value="查看用户"/>
            <h:commandButton action="userlog" value="查看日志"/>
                
            <a href="http://localhost:8080/r/index.jsp">主页</a>
            
            <e:menu value="#{menuBean.model}"></e:menu>
        </div>
        
    </h:form>
</ui:composition>
</html>


提示:<e:menu value="#{menuBean.model}"></e:menu>中的menuBean是你自己定义的managedbean,model为MenuModel在menuBean中的实例;


2. 相应的Managedbean:


/**
 * EMS 11185 限时未达邮费奉还
 * 
 * @author 螃蟹
 */
@SuppressWarnings(value = "serial")
@ManagedBean(name = "menuBean")
@SessionScoped
public class MenuBean implements Serializable {

	MenuModel model;

	public MenuModel getModel() {
		return model;
	}

	public MenuBean() {
		MenuItem mi;
		model = new MenuModel();
		model.setTitle("系统菜单");
		MenuSub ms = new MenuSub();
		ms.setValue("消息管理");
		mi = new MenuItem();
		mi.setUrl("users");
		mi.setValue("添加消息");
		ms.getChildren().add(mi);
		mi = new MenuItem();
		mi.setUrl("users");
		mi.setValue("删除消息");
		ms.getChildren().add(mi);
		MenuSub sub = new MenuSub();
		sub.setValue("消息审查");
		mi = new MenuItem();
		mi.setUrl("users");
		mi.setValue("添加审查");
		sub.getChildren().add(mi);
		mi = new MenuItem();
		mi.setUrl("users");
		mi.setValue("删除审查");
		sub.getChildren().add(mi);
		ms.getChildren().add(sub);
		model.addSubmenu(ms);
		ms = new MenuSub();
		ms.setValue("设备管理");
		mi = new MenuItem();
		mi.setUrl("users");
		mi.setValue("设备进口");
		ms.getChildren().add(mi);
		mi = new MenuItem();
		mi.setUrl("users");
		mi.setValue("设备下发");
		ms.getChildren().add(mi);
		model.addSubmenu(ms);
		ms = new MenuSub();
		ms.setValue("用户日志");
		mi = new MenuItem();
		mi.setUrl("users");
		mi.setValue("查看用户");
		ms.getChildren().add(mi);
		mi = new MenuItem();
		mi.setUrl("userlog");
		mi.setValue("查看日志");
		ms.getChildren().add(mi);
		model.addSubmenu(ms);
	}
}


     这种方法是通过redirect跳转。

三、左侧菜单action事件跳转:

1. xhtml文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:e="http://www.ems.com.cn">
    
<h:head>

</h:head>
<ui:composition>
    <h:form id="menuFormId">
        <div style="text-align:center; width:220px; height:500px; border-right-style:solid; border-right-color: Green; border-right-width: 2px; ">
            <f:facet name="header">
                <h:outputText value="系统功能菜单"  style="font-size: 18px"/>
            </f:facet>
            <h:commandButton action="users" value="查看用户"/>
            <h:commandButton action="userlog" value="查看日志"/>
                
            <a href="http://localhost:8080/r/index.jsp">主页</a>
            
            <e:menu value="#{menuBean.model}" action="#{menuBean.navigationAction}"></e:menu>
        </div>
        
    </h:form>
</ui:composition>
</html>



  提示:<e:menu value="#{menuBean.model}" action="#{menuBean.navigationAction}"></e:menu>中的menuBean是你自己定义的managedbean,

并且要extends EMS11185MenuBean;  action="#{menuBean.navigationAction}",这个内容你必需不能更改(或者说你无需更改)直接用在你的<e:menu />标签中。

2. 相应的Managedbean:

/** 
 *   EMS 11185 限时未达邮费奉还
 * @author 螃蟹
 */
@SuppressWarnings(value = "serial")
@ManagedBean(name = "menuBean")
@SessionScoped
public class MenuBean extends EMS11185MenuBean implements Serializable{

    
    public MenuBean(){
        MenuItem mi;
        model = new MenuModel();
        model.setTitle("系统菜单");
        MenuSub ms = new MenuSub();
        ms.setValue("消息管理");
        
        mi = new MenuItem();
        mi.setUrl("users");
        mi.setValue("添加消息");
        ms.getChildren().add(mi);
        
        mi = new MenuItem();
        mi.setUrl("users");
        mi.setValue("删除消息");
        ms.getChildren().add(mi);
        
        MenuSub sub = new MenuSub();
        sub.setValue("消息审查");
        
        mi = new MenuItem();
        mi.setUrl("users");
        mi.setValue("添加审查");
        sub.getChildren().add(mi);
        
        mi = new MenuItem();
        mi.setUrl("users");
        mi.setValue("删除审查");
        sub.getChildren().add(mi);
        
        ms.getChildren().add(sub);

        
        
        model.addSubmenu(ms);
        
        ms = new MenuSub();
        ms.setValue("设备管理");
        
        mi = new MenuItem();
        mi.setUrl("users");
        mi.setValue("设备进口");
        ms.getChildren().add(mi);
        
        mi = new MenuItem();
        mi.setUrl("users");
        mi.setValue("设备下发");
        ms.getChildren().add(mi);
        
        model.addSubmenu(ms);
        
        ms = new MenuSub();
        ms.setValue("用户日志");
        
        mi = new MenuItem();
        mi.setUrl("users");
        mi.setValue("查看用户");
        ms.getChildren().add(mi);
        
        mi = new MenuItem();
        mi.setUrl("userlog");
        mi.setValue("查看日志");
        ms.getChildren().add(mi);
        
        model.addSubmenu(ms);
    }

    
}


3. EMS11185MenuBean代码:

@SuppressWarnings("serial")
public class EMS11185MenuBean implements Serializable{
	protected MenuModel model;
	private String navigation;
	
	public MenuModel getModel() {
		return model;
	}

	public void setModel(MenuModel model) {
		this.model = model;
	}
	
	public String navigationAction(){
		return navigation;
	}
	
	public void setNavigation(String navigation) {
		this.navigation = navigation;
	}
}


  至此,左侧菜单已经实现。下面是使用截图:








  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
 JSF2.xdatatable分页控件左侧菜单简单应用   JSF2.x,功能强大,使用方便。全世界使用JSF的人越来越多。而且也有很多很好的控件给发出来了,如:richfaces、primefaces、myfaces等,就日前来讲primefaces功能很强大,控件很多,但有一点不好就是不支持IE6,特别是下拉列表,p:dialog等,其它的分页p:datatable实际使用起来总有不如意的地方。richfaces还支持可视化开发,可惜就是控件开发进度相比其它的慢了很多。下面帖我的控件的使用方法:   下载地址:http://download.csdn.net/detail/ptianfeng/4802713 一、分页具体使用方法如下(不多说,直接给你些颜色看看): 1. xhtml文件:    <html xmlns:ems="http://www.ems.com.cn" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:ui="http://java.sun.com/jsf/facelets"> <h:dataTable id="tableId" value="#{userlogMBean.defaultDataModel}" var="var" rows="10"> <h:column> <f:facet name="header"> <h:outputText value="" /> </f:facet> <h:outputText value="#{var.sqlid}" /> </h:column> </h:dataTable> <ems:page id="pageId" for="tableId" maxPage="5" /> 2. 相应的Managedbean: [java] view plaincopy /** * EMS 11185 限时未达邮费奉还 * @author 螃蟹 */ @SuppressWarnings(value = "serial") @ManagedBean(name = "userlogMBean") @ViewScoped() public class UserlogMBean extends PageListBaseBean implements Serializable { public PagedListDataModel getDefaultDataModel() { if (defaultDataModel == null) { defaultDataModel = new PagedListDataModel(pageSize) { public DataPage fetchPage(int startRow, int pageSize) { ArrayList<UserlogVo> dataList = new ArrayList<UserlogVo>(); List<Userlog> list = dao.getObjectList(jpql, pageSize, startRow); if (list != null) { for (Userlog u : list) { UserlogVo vo = new UserlogVo(); vo.setSqlid(u.getSqlid()); vo.setCode(u.getCode()); vo.setDate(u.getDate()); vo.setStation(u.getStation()); vo.setUserid(u.getUserid()); vo.setText(u.getText()); dataList.add(vo); } } int size = dao.getCountOption(jpql); DataPage dataPage = new DataPage(size, startRow, dataList); return dataPage; } }; } return defaultDataModel; } } 提示:关于PageListBaseBean更多的信息,可以参阅我在百度的blog(百度改版后,让我很QF,所以转到CSDN来了): http://hi.baidu.com/kittopang/item/19af4e37c6ede2fae6bb7a11   至此,分页已经实现。下面是使用截图:
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值