先介绍下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> jmesa的一个例子 http://download.csdn.net/source/1743731 jar包 官方包里都有 如果找不到就当给我送点分
jmesa-snapshot.jar 下载页面 http://download.csdn.net/source/1743559
slf4j-api-1.4.3.jar http://download.csdn.net/source/1743583
slf4j-log4j12-1.4.3.jar http://download.csdn.net/source/1743564
itext-paulo-155.jar http://download.csdn.net/source/1743553
asm-2.2.jar http://download.csdn.net/source/1743538
jexcel-2.6.6.jar http://download.csdn.net/source/1743557
hsqldb-1.8.0.1.jar http://download.csdn.net/source/1743546 commons-lang-2.2.jar http://download.csdn.net/source/1743541 antlr-2.7.6.jar http://download.csdn.net/source/1743533 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/yjplxq/archive/2009/10/15/4674397.aspx |
|
来自: 欢欢2008 > 《页面表格处理解决方案》