jmesa是一个集成了分页,导出,编辑,显示,排序,过滤等等功能强大的一个表格控件,但是用起来我还是有点不熟练,最近只是对分页进行了运用,其他的还有待于以后运用。下面我说一下如何使用jmesa进行分页.
我用的是jmesa3.0,struts2,jdk要在1.5以上,做了简单的分页,这里主要是为了说名怎么用jmesa。
首先下载jmesa,http://code.google.com/p/jmesa/downloads/list
Jmesa源码的包结构大致分为四个包:
org.jmesa.core Jmesa的核心包,所下面定义下最核心的接口CoreContext,CoreContext的作有容后再述,下面有四个子包:
org.jmesa.core.filter 过滤器(按条件对纪录进行过滤)
org.jmesa.core.sort 排序,该包提供纪录按指定列进行排序的功能
org.jmesa.core.message I18N资源文件实现,使用Java内置的ResourceBundle实现。较简单
org.jmesa.core.preference Jmesa选项,使用Java内置Properties实现。也较简单
org.jmesa.limit 该
包提供对纪录进行过滤的功能,limit的原意为限制,这里表现为过滤。Jmesa提供接口让开发人员自定义存放Limit的地方。该接口就是位于该包
下面子包state下的State接口,用来保存当前用户查询选项或参数的状态,这些参数可能包括过滤条件(Filter),排序条件(Sort)以及分
页信息等。
org.jmesa.view 视图,亦即展现。该包下定义了展现表格的接口及提供了两种实现,CSV及HTML。展现的原理很简单,一个视图拥有一个被展现的组件(Component)和渲染器(Renderer)。使用渲染器来渲染组件。那么自然而然,View包下面又看到两个子包:
org.jmesa.view.component 定义了表格需要的组件,即表格,行,列。
org.jmesa.view.renderer 定义表格所需要的一系列渲染器,如行渲染,列渲染,单元格渲染等
org.jmesa.web 为在Web环境中使用Jmesa提供的一系列便利的类。
以上稍微介绍了一下jmesa的源码分布包及类的意义。下面开始我的分页:
大家肯定很关系页面了,首先看页面吧,
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<%@ taglib uri="/WEB-INF/tld/jmesa.tld" prefix="jmesa" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'list_user.jsp' starting page</title>
<script type="text/javascript" src="http://zghbwjl.blog.163.com/blog/<%=path%>/js/jmesa/jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="http://zghbwjl.blog.163.com/blog/<%=path%>/js/jmesa/jquery.js"></script>
<script type="text/javascript" src="http://zghbwjl.blog.163.com/blog/<%=path%>/js/jmesa/jquery.jmesa.js"></script>
<script type="text/javascript" src="http://zghbwjl.blog.163.com/blog/<%=path%>/js/jmesa/jmesa.js"></script>
<link rel="stylesheet" type="text/css" href="http://zghbwjl.blog.163.com/blog/<%=path%>/css/jmesa/jmesa.css"></link>
</head>
<body>
<form name="userForm" action="<%=path %>/users.action" method="post">
<jmesa:struts2TableModel items="${items}" id="user_table" var="bean" stateAttr="restore" >
<jmesa:htmlTable width="600" caption="用户信息">
<jmesa:htmlRow uniqueProperty="username">
<jmesa:htmlColumn property="username" />
<jmesa:htmlColumn property="password"/>
</jmesa:htmlRow>
</jmesa:htmlTable>
</jmesa:struts2TableModel>
</form>
<script type="text/javascript">
function onInvokeAction(id){
$.jmesa.setExportToLimit(id,'');
$.jmesa.createHiddenInputFieldsForLimitAndSubmit(id);
}
</script>
</body>
</html>
这是页面代码,相应的引入css,js文件,同时有一个<%@ taglib uri="/WEB-INF/tld/jmesa.tld" prefix="jmesa" %> 标签,所以要在项目中/WEB-INF/tld/jmesa.tld加入,jmesa.tld在源文件中有,拷贝一个。
我们还需要将jmesa.properties考入,在web.xml文件中配置:
<context-param>
<param-name>jmesaPreferencesLocation</param-name>
<param-value>WEB-INF/jmesa.properties</param-value>
</context-param>
jmesa.properties的内容为:
html.toolbar.maxRowsDroplist.increments=12,24,36
limit.rowSelect.maxRows=12
html.imagesPath=/images/jmesa/
这样基本上配置就完成了,当然还有jar文件需要加入,jar如图:
这是所有的需要的jar文件
下面看action:
public class UsersAction extends ActionSupport implements ServletRequestAware,ServletResponseAware {
/**
*
*/
private static final long serialVersionUID = 1L;
private HttpServletRequest request;
private HttpServletResponse response;
@Override
public void setServletRequest(HttpServletRequest request) {
this.request=request;
}
@Override
public void setServletResponse(HttpServletResponse response) {
this.response=response;
}
public String execute(){
List items=new ArrayList();
for(int i=0;i<20;i++){
Users users=new Users();
users.setUsername("aa"+i);
users.setPassword("pwd"+i);
items.add(users);
}
String id="user_table";
TableFacade tableFacade = new TableFacadeImpl("user_table", request);
request.setAttribute("items",items);
return "success";
}
}
这样就好了,看看是不是很简单啊,是很简单的,不过是做出来了才简单,做不出来就觉得好麻烦哦,呵呵...
效果如图:

评论