分享

初探jmesa

 欢欢2008 2011-04-08
先介绍下jmesa 的官网 :http://code.google.com/p/jmesa/
我个人比较偏向于看到结果,然后分析问题,处理问题,所以别的不说,我从官方摘了一个简单例子,拿来看看,然后有时间慢慢剖析
环境 eclipse,tomcat 6.0  jdk6,
如下图:我的第一个jmesa
 
我用了struts1,为方便,全部方法写在一个类里
下面的代码
package com.base;
import static org.jmesa.facade.TableFacadeFactory.createTableFacade;
import static org.jmesa.limit.ExportType.CSV;
import static org.jmesa.limit.ExportType.JEXCEL;
import static org.jmesa.limit.ExportType.PDFP;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;
import org.jmesa.core.filter.DateFilterMatcher;
import org.jmesa.core.filter.MatcherKey;
import org.jmesa.facade.TableFacade;
import org.jmesa.limit.Limit;
import org.jmesa.view.component.Column;
import org.jmesa.view.component.Row;
import org.jmesa.view.component.Table;
import org.jmesa.view.editor.CellEditor;
import org.jmesa.view.editor.DateCellEditor;
import org.jmesa.view.html.HtmlBuilder;
import org.jmesa.view.html.component.HtmlColumn;
import org.jmesa.view.html.component.HtmlRow;
import org.jmesa.view.html.component.HtmlTable;
import org.jmesa.view.html.editor.DroplistFilterEditor;
import org.jmesa.view.html.editor.HtmlCellEditor;
import org.jmesaweb.domain.Name;
import org.jmesaweb.domain.President;
public class FirstJsAction extends DispatchAction {
 
 public ActionForward execute(ActionMapping mapping, ActionForm arg1,
   HttpServletRequest request, HttpServletResponse response) throws Exception {
  Name name = new Name("firstName", "lastName", "nickName");
  President president = null;
  List items = new ArrayList();
  for(int i=0;i<25;i++) {
   president = new President(1, "term"+i, new Date(), new Date(), "education", "career", "politicalPart"," selected");
   items.add(president);
  }
  String id = request.getParameter("id");
  id = "base";
 
  TableFacade tableFacade = createTableFacade(id, request);
        System.out.println("id = "+id);
        tableFacade.setItems(items); // set the items
        tableFacade.setExportTypes(response, CSV, JEXCEL, PDFP); // set the exports allowed
        tableFacade.setStateAttr("restore"); // return to the table in the same state that the user left it.
       
        Limit limit = tableFacade.getLimit();
        if (limit.isExported()) {
            export(tableFacade);
            return null; // In Spring returning null tells the controller not to do anything.
        }
       
        String html = getHtml(tableFacade);
        request.setAttribute("presidents", html); // Set the Html in the request for the JSP
  return mapping.findForward("success");
 }
 private String getHtml(TableFacade tableFacade) {
        // add a custom filter matcher to be the same pattern as the cell editor used.
        tableFacade.addFilterMatcher(new MatcherKey(Date.class, "born"), new DateFilterMatcher("MM/yyyy"));
        // set the column properties
        tableFacade.setColumnProperties("education", "selected", "term", "career", "born");
       
        HtmlTable table = (HtmlTable) tableFacade.getTable();
        table.setCaption("我的第一个jmesa");
        table.getTableRenderer().setWidth("1000px");
        HtmlRow row = table.getRow();
        HtmlColumn firstName = row.getColumn("education");
        firstName.setTitle("First Name");
        HtmlColumn lastName = row.getColumn("selected");
        lastName.setTitle("Last Name");
        HtmlColumn career = row.getColumn("career");
        career.getFilterRenderer().setFilterEditor(new DroplistFilterEditor());
        career.setTitle("career");
        Column born = row.getColumn("born");
        born.getCellRenderer().setCellEditor(new DateCellEditor("MM/yyyy"));
        // Using an anonymous class to implement a custom editor.
        firstName.getCellRenderer().setCellEditor(new CellEditor() {
            public Object getValue(Object item, String property, int rowcount) {
                Object value = new HtmlCellEditor().getValue(item, property, rowcount);
                HtmlBuilder html = new HtmlBuilder();
                html.a().href().quote().append("http://www.baidu.com/").quote().close();
                html.append(value);
                html.aEnd();
                return html.toString();
            }
        });
        return tableFacade.render(); // Return the Html.
    }
    private void export(TableFacade tableFacade) {
        // set the column properties
        tableFacade.setColumnProperties("name.firstName", "name.lastName", "term", "career");
        Table table = tableFacade.getTable();
        table.setCaption("Presidents");//设置标题
        Row row = table.getRow();//获得表行
        Column firstName = row.getColumn("name.firstName");
        firstName.setTitle("First Name");
        Column lastName = row.getColumn("name.lastName");
        lastName.setTitle("Last Name");
        tableFacade.render(); // Will write the export data out to the response.
    }
}
jsp:
<%@ page language="java" contentType="text/html; charset=gbk"
    pageEncoding="gbk"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www./TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gbk">
  <link rel="stylesheet" type="text/css" href="/TestJmesa/css/web.css"></link>
  <link rel="stylesheet" type="text/css" href="/TestJmesa/css/jmesa.css"></link>
  <script type="text/javascript" src="/TestJmesa/js/jquery-1.3.min.js"></script>
  <script type="text/javascript" src="/TestJmesa/js/jquery.bgiframe.pack.js"></script>
  <script type="text/javascript" src="/TestJmesa/js/jquery.jmesa.js"></script>
  <script type="text/javascript" src="/TestJmesa/js/jmesa.js"></script>
<title>Insert title here</title>
</head>
<body>
test!
   <form name="presidentsForm" action="first.do">
     <div align="center">
            ${presidents}
        </div>   
            kankan
        </form>
       
        <p class="content">
            This example source code can be found
            <a href="http://code.google.com/p/jmesa/wiki/FacadeExample">here</a>.
        </p>
        <script type="text/javascript">
            function onInvokeAction(id) {
                alert("id"+id);
                $.jmesa.setExportToLimit(id, '');
                $.jmesa.createHiddenInputFieldsForLimitAndSubmit(id);
            }
            function onInvokeExportAction(id) {
                var parameterString = $.jmesa.createParameterStringForLimit(id);
                location.href = '${pageContext.request.contextPath}/first.do?' + parameterString;
            }
        </script>
</body>
</html>
jar包 官方包里都有 如果找不到就当给我送点分
jmesa-snapshot.jar  下载页面 http://download.csdn.net/source/1743559

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/yjplxq/archive/2009/10/15/4674397.aspx

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多