jmesa整合struts2标签分页

  原文来自 http://zghbwjl.blog.163.com/blog/static/12033667220108209424766/

 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如图:

jmesa分页 - zghbwjl - zghbwjl的博客

 这是所有的需要的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";
    }

这样就好了,看看是不是很简单啊,是很简单的,不过是做出来了才简单,做不出来就觉得好麻烦哦,呵呵...
效果如图:

你可能感兴趣的:(JavaScript,jquery,Web,css,Blog)