您的位置:首页 > 其它

Jmesa简单的使用demo

2012-02-20 14:06 483 查看
1.Bean

package org.jmesaweb.domain;

public class Name {

private String firstName;

private String lastName;

private String nickName;

public Name() {

}

public Name(String firstName, String lastName, String nickName) {

this.firstName = firstName;

this.lastName = lastName;

this.nickName = nickName;

}

public String getFirstName() {

return firstName;

}

public void setFirstName(String firstName) {

this.firstName = firstName;

}

public String getLastName() {

return lastName;

}

public void setLastName(String lastName) {

this.lastName = lastName;

}

public String getFullName() {

return getFirstName() + " " + getLastName();

}

public String getNickName() {

return nickName;

}

public void setNickName(String nickName) {

this.nickName = nickName;

}

}

--------------------------------------------------------------------------------------------------------

package org.jmesaweb.domain;

import java.io.Serializable;

import java.util.Date;

public class President implements Serializable {

private int id;

private Name name;

private String term;

private Date born;

private Date died;

private String education;

private String career;

private String politicalParty;

private String selected;

public President(int id, Name name, String term, Date born, Date died,

String education, String career, String politicalParty,

String selected) {

super();

this.id = id;

this.name = name;

this.term = term;

this.born = born;

this.died = died;

this.education = education;

this.career = career;

this.politicalParty = politicalParty;

this.selected = selected;

}

public President(int id, String term, Date born, Date died,

String education, String career, String politicalParty,

String selected) {

super();

this.id = id;

this.term = term;

this.born = born;

this.died = died;

this.education = education;

this.career = career;

this.politicalParty = politicalParty;

this.selected = selected;

}

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public Name getName() {

return name;

}

public void setName(Name name) {

this.name = name;

}

public Date getBorn() {

return born;

}

public void setBorn(Date born) {

this.born = born;

}

public String getCareer() {

return career;

}

public void setCareer(String career) {

this.career = career;

}

public Date getDied() {

return died;

}

public void setDied(Date died) {

this.died = died;

}

public String getEducation() {

return education;

}

public void setEducation(String education) {

this.education = education;

}

public String getPoliticalParty() {

return politicalParty;

}

public void setPoliticalParty(String politicalParty) {

this.politicalParty = politicalParty;

}

public String getTerm() {

return term;

}

public void setTerm(String term) {

this.term = term;

}

public String getSelected() {

return selected;

}

public void setSelected(String selected) {

this.selected = selected;

}

}

2.Action

package com.base;

import static org.jmesa.facade.TableFacadeFactory.createTableFacade;

import java.util.ArrayList;

import java.util.Date;

import java.util.List;

import static org.jmesa.limit.ExportType.CSV;

import static org.jmesa.limit.ExportType.JEXCEL;

import static org.jmesa.limit.ExportType.PDFP;

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;

import org.slf4j.LoggerFactory;

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.

}

}

3.Jsp

<%@ page language="java" contentType="text/html; charset=gbk"

pageEncoding="gbk"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/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>

<html>

<head>

<title>JMesa Example</title>

</head>

<body>

<p class="content">

JMesa using the Limit to only retrieve the current rows needed. Also using AJAX to avoid a full page refresh.

</p>

<p class="content">

Other examples:<br/>

<a href="${pageContext.request.contextPath}/basic.run?restore=true">Basic</a> <br/>

<a href="${pageContext.request.contextPath}/groovy.run?restore=true">Groovy</a><br/>

<a href="${pageContext.request.contextPath}/tag.run?restore=true">Tag</a><br/>

<a href="${pageContext.request.contextPath}/worksheet.run">Worksheet</a><br/>

</p>

<form name="presidentsForm">

<div id="presidents">

${presidents}

</div>

</form>

<p class="content">

This example source code can be found

<a href="http://code.google.com/p/jmesa/wiki/FacadeLimitExample">here</a>.

</p>

<script type="text/javascript">

function onInvokeAction(id) {

$.jmesa.setExportToLimit(id, '');

var parameterString = $.jmesa.createParameterStringForLimit(id);

$.get('${pageContext.request.contextPath}/limit.run?ajax=true&' + parameterString, function(data) {

$("#presidents").html(data)

});

}

function onInvokeExportAction(id) {

var parameterString = $.jmesa.createParameterStringForLimit(id);

location.href = '${pageContext.request.contextPath}/limit.run?ajax=false&' + parameterString;

}

</script>

</body>

</html>

4.jmesa.properties

html.toolbar.maxRowsDroplist.increments=12,24,36

limit.rowSelect.maxRows=12
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: