java web 通用的分页组件

通用的分页组件

有时候找到一个合适的web表格分页组件真是一件痛苦的事情,要么是没有完全封装的分页方法,使用起来比较麻烦,不够方便,要么使用方便,但很难同项目结合,也有许多开源分页组件,功能非常强大,但使用起来有很多问题,有些不好与系统结合,有些不好扩展,但总感觉有些浮肿,很多功能不够实用,也没多大意义,就此尝试写了一个分页组件,够用了,但也有不少问题,望大家共同修正.

1、  HTML元素java封装:

为了操作方便起见,

package commons.page;

 

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import java.util.Set;

import java.util.Map.Entry;

 

public class HtmlElement {

       private String tagName;

       private Map<String, String> attributes = new HashMap<String, String>();

       private List<HtmlElement> children = new ArrayList<HtmlElement>();

       private String value = "";

       private String text = "";

 

       public HtmlElement(String tagName) {

              this.tagName = tagName;

       }

 

       public void setValue(String value) {

              this.value = value;

       }

 

       public List<HtmlElement> getChildren() {

              return children;

       }

 

       public void addChild(HtmlElement element) {

              this.children.add(element);

       }

 

       public void addAttribute(String name, String value) {

              this.attributes.put(name, value);

       }

 

       public String getAttributeValue(String name) {

              return this.attributes.get(name);

       }

       @Override

       public String toString() {

              return this.toHtml();

       }

       public String toHtml() {

              StringBuffer sb = new StringBuffer();

              sb.append("<");

              sb.append(this.tagName);

              sb.append(this.getAttr());

              sb.append(">");

              sb.append(this.value);

              for (HtmlElement e : this.children) {

                     sb.append(e.toHtml());

              }

              sb.append(this.text);

              sb.append("</");

              sb.append(this.tagName);

              sb.append(">");

              return sb.toString();

       }

       protected String getAttr() {

              StringBuffer sb = new StringBuffer();

              Set<Entry<String, String>> attr = this.attributes.entrySet();

              for (Entry<String, String> entry : attr) {

                     sb.append(" ");

                     sb.append(entry.getKey());

                     sb.append("=/"");

                     sb.append(entry.getValue());

                     sb.append("/"");

              }

              return sb.toString();

       }

 

       public void setText(String text) {

              this.text = text;

       }

}

       例如:

HtmlElement div1 = new HtmlElement("div");

              HtmlElement div2 = new HtmlElement("div");

              HtmlElement span = new HtmlElement("span");

              div1.addAttribute("class", "tuo");

              div1.addAttribute("id", "dd1");

              div1.addChild(div2);

              div1.addChild(span);

              div1.setValue("fds222222fds");

              div1.setText("wwwwwwwww");

        System.out.println(div1.toHtml());

生成:

<div id="dd1" class="tuo">

fds222222fds

<div></div>

<span></span>

Wwwwwwwww

</div>

 

2、 

 

 

 

 

 

 

 

 

数据表格类

package commons.page;

 

import java.util.Calendar;

import java.util.List;

 

import commons.page.model.ArrayDataModel;

import commons.page.model.DataModel;

import commons.page.model.ListDataModel;

 

public class HtmlTable extends HtmlElement {

       private HtmlElement thead = new HtmlElement("thead");

       private HtmlElement tbody = new HtmlElement("tbody");

       private HtmlElement tfoot = new HtmlElement("tfoot");

       private String[] header = null;

       private String[] footer = null;

       private DataModel dataModel = null;

       private int startRowIndex = -1;// 开始行索引

       private int maxRowNum = -1;// 最大行数

       private CellCallBack callBack;

 

       public HtmlTable() {

              super("table");

       }

       public void setCellCallBack(CellCallBack callBack) {

              this.callBack = callBack;

       }

       public void setMaxRowNum(int maxRowNum) {

              this.maxRowNum = maxRowNum;

       }

       public void setStartRowIndex(int startRowIndex) {

              this.startRowIndex = startRowIndex;

       }

       public void setHeader(String[] header) {

              this.header = header;

       }

       public void setHeader(String header) {

              this.header = header.split(",");

       }

       public void setFooter(String[] footer) {

              this.footer = footer;

       }

       public void setFooter(String footer) {

              this.footer = footer.split(",");

       }

       public void setDataModel(DataModel dataModel) {

              this.dataModel = dataModel;

       }

       public void setData(Object[][] data) {

              this.dataModel = new ArrayDataModel();

              this.dataModel.setWrappedData(data);

       }

       public void setData(List data) {

              this.dataModel = new ListDataModel();

              this.dataModel.setWrappedData(data);

       }

 

       public void setTbody(HtmlElement tbody) {

              this.tbody = tbody;

       }

 

       public void setTfoot(HtmlElement tfoot) {

              this.tfoot = tfoot;

       }

 

       public void setThead(HtmlElement thead) {

              this.thead = thead;

       }

      

       @Override

       public String toHtml() {

              String id = this.getAttributeValue("id");

              if (id == null || "".equals(id)) {

                     this.addAttribute("id", "table" + Calendar.getInstance().getTimeInMillis());

              }

              this.process();

 

              return super.toHtml();

       }

       private void process() {

              if (this.header != null) {

                     this.thead.getChildren().clear();

                     HtmlElement tr = new HtmlElement("tr");

                     for (String header : this.header) {

                            HtmlElement th = new HtmlElement("th");

                            th.setText(header);

                            tr.addChild(th);

                     }

                     this.thead.addChild(tr);

                     this.addChild(this.thead);

              }

              if (this.dataModel != null) {

                     if (this.callBack == null) {

                            this.callBack = new CellCallBack() {

                                   public HtmlElement doCell(Object data) {

                                          HtmlRow tr = new HtmlRow();

                                          if (data instanceof String[]) {

                                                 String[] ds = (String[]) data;

                                                 int len = ds.length;

                                                 if (header != null) {

                                                        if (len > header.length) {

                                                               len = header.length;

                                                        }

                                                 }

                                                 for (int i = 0; i < len; i++) {

                                                        HtmlElement td = new HtmlElement("td");

                                                        td.setText(ds[i] == null ? "" : ds[i]);

                                                        tr.addChild(td);

                                                 }

                                          } else if (data instanceof Object[]) {

                                                 Object[] os = (Object[]) data;

                                                 int len = os.length;

                                                 if (header != null) {

                                                        if (len > header.length) {

                                                               len = header.length;

                                                        }

                                                 }

                                                 for (int i = 0; i < len; i++) {

                                                        HtmlElement td = new HtmlElement("td");

                                                        td.setText(os[i] == null ? "" : os[i].toString());

                                                        tr.addChild(td);

                                                 }

                                          }

                                          return tr;

                                   }

                            };

                     }

                     int startRow = 0;

                     int endRow = 0;

                     int j = this.dataModel.getRowCount();

                     if (this.startRowIndex > 0) {

                            startRow = this.startRowIndex;

                     }

                     if (this.maxRowNum < 0) {

                            endRow = this.dataModel.getRowCount();

                     } else {

                            endRow = startRow + this.maxRowNum;

                     }

                     if (endRow > j) {

                            endRow = j;

                     }

                     this.tbody.getChildren().clear();

 

                     for (int i = startRow; i < endRow; i++) {

                            this.dataModel.setRowIndex(i);

                            HtmlElement tr = this.callBack.doCell(this.dataModel.getRowData());

                            this.tbody.addChild(tr);

                     }

                     if (endRow - startRow < this.maxRowNum) {

                            for (int i = 0; i < (this.maxRowNum - (endRow - startRow)); i++) {

                                   HtmlElement row = TableUtil.createRow(new String[this.header.length]);

                                   this.tbody.addChild(row);

                            }

                     }

                     this.addChild(this.tbody);

              }

              if (this.footer != null) {

                     this.tfoot.getChildren().clear();

                     HtmlElement tr = new HtmlElement("tr");

                     for (String footer : this.footer) {

                            HtmlElement td = new HtmlElement("td");

                            td.setText(footer);

                            tr.addChild(td);

                     }

                     this.tfoot.addChild(tr);

                     this.addChild(this.tfoot);

              }

       }

}

 

该类主要功能是将提供的表头,表尾数据及表格数据生成对应的HTML, 并且可以设置需要显示的数据内容(从某行开始到某行),并提供了多种数据模型供选择包括数组数据,List数据,并可以通过继承DataModel实现其中的方法来自定义.

3、  统一数据模型

package commons.page.model;

 

import java.util.ArrayList;

import java.util.List;

 

public abstract class DataModel {

       private List _listeners;

       public void addDataModelListener(DataModelListener listener) {

              if (listener == null)

                     throw new NullPointerException("listener");

              if (_listeners == null) {

                     _listeners = new ArrayList();

              }

              _listeners.add(listener);

       }

       public DataModelListener[] getDataModelListeners() {

              if (_listeners == null) {

                     return new DataModelListener[0];

              }

              return (DataModelListener[]) _listeners.toArray(new DataModelListener[_listeners.size()]);

       }

       abstract public int getRowCount();

 

      

       abstract public Object getRowData();

 

      

       abstract public int getRowIndex();

 

       abstract public Object getWrappedData();

       abstract public boolean isRowAvailable();

 

       public void removeDataModelListener(DataModelListener listener) {

              if (listener == null)

                     throw new NullPointerException("listener");

              if (_listeners != null) {

                     _listeners.remove(listener);

              }

       }

       abstract public void setRowIndex(int rowIndex);

       abstract public void setWrappedData(Object data);

}

 

DataModel来源于JSFDataModel,并且有ArrayDataModel,ListDataModel, ResultDataModel, ScalarDataModel等多种实现,基本上有ArrayDataModel,ListDataModel就够用了,如果不够可以自己继承DataModel实现来实现.

4、  分页类

package commons.page;

 

import java.math.*;

 

/**

 * 分页操作类,该类来自于互联网,做了部分修改,以适应需求

 *

 * @author life

 *

 */

public class Pager {

       private int totalRows; // 总行数

       private int pageSize = 13; // 每页显示的行数

       private int currentPage; // 当前页号

       private int totalPages; // 总页数

       private int startRow; // 当前页在数据库中的起始行

 

       public Pager() {

              currentPage = 1;

              startRow = 0;

       }

 

       private void process() {

              totalPages = totalRows / pageSize;

              int mod = totalRows % pageSize;

              if (mod > 0) {

                     totalPages++;

              }

              if (this.currentPage <= 0) {

                     currentPage = 1;

              }

              startRow = (currentPage - 1) * pageSize;

 

       }

 

       public int getStartRow() {

              return startRow;

       }

 

       public int getTotalPages() {

              return totalPages;

       }

 

       public int getCurrentPage() {

              return currentPage;

       }

 

       public int getPageSize() {

              return pageSize;

       }

 

       public void setTotalRows(int totalRows) {

              this.totalRows = totalRows;

              this.process();

       }

 

       // public void setStartRow(int startRow) {

       // this.startRow = startRow;

       // }

       // public void setTotalPages(int totalPages) {

       // this.totalPages = totalPages;

       // }

       public void setCurrentPage(int currentPage) {

              this.currentPage = currentPage;

              this.process();

       }

 

       public void setPageSize(int pageSize) {

              this.pageSize = pageSize;

              this.process();

       }

 

       public int getTotalRows() {

              return totalRows;

       }

 

       public void first() {

              currentPage = 1;

              startRow = 0;

       }

 

       public void previous() {

              if (currentPage == 1) {

                     return;

              }

              currentPage--;

              startRow = (currentPage - 1) * pageSize;

       }

 

       public void next() {

              // System.out.print("next:");

              if (currentPage < totalPages) {

                     currentPage++;

              }

              startRow = (currentPage - 1) * pageSize;

       }

 

       public void last() {

              currentPage = totalPages;

              startRow = (currentPage - 1) * pageSize;

       }

 

       public void refresh(int _currentPage) {

              currentPage = _currentPage;

              if (currentPage > totalPages) {

                     last();

              }

       }

}

 

Pager类来源于互联网,主要负责分页操作.

5、  最终分页类操作

package commons.page;

 

import javax.servlet.http.HttpServletRequest;

 

public class PageDataTable {

       private HtmlTable table = new HtmlTable();// 分页表格

       private int operate = 0;// 操作,默认为第一页

       private int gopage = 1;// 转到页码

       private int cpage = 1;// 当前页

       private int rowsize = 13;// 默认13

       private Pager pager = new Pager();// 分页操作类

       private int mode = 0;// 模式0:内存分页,1:数据库查询分页

       private PageDataCallBack callBack;// 适用于mode=1(数据库查询分页),HtmlTable提供DataModel数据模型回叫对象

       private String id = "";// 分页表格ID,默认值为2098,ID将在一个页面使用多个分页表格时作为唯一标识,标记正在操作的分页表格,如果有重复,将不能正常工作

       private final static String DEFAULT_ID = "2098";

 

        

       public PageDataTable(HttpServletRequest request, String id, int mode) {

              this.init(request, id, mode);

       }

 

        

       public PageDataTable(HttpServletRequest request, int mode) {

              this.init(request, DEFAULT_ID, mode);

       }

 

       public PageDataTable(HttpServletRequest request, String id) {

              this.init(request, id, 0);

       }

 

       public PageDataTable(HttpServletRequest request) {

              this.init(request, DEFAULT_ID, 0);

       }

 

        

       private void init(HttpServletRequest request, String id, int mode) {

              this.mode = mode;

              this.id = id;

              String op = request.getParameter("__OPERATE__" + this.id);

              String gopage = request.getParameter("__GOPAGE__" + this.id);

              String cpage = request.getParameter("__CPAGE__" + this.id);

              String maxsize = request.getParameter("__MAXROWSIZE__" + this.id);

 

              // System.out.println("===" +op+"---"+gopage+"---"+cpage);

              this.operate = op == null ? 0 : ("".equals(op) ? 4 : Integer.parseInt(op));

              this.gopage = gopage == null ? 1 : Integer.parseInt(gopage);

              this.cpage = cpage == null ? 1 : Integer.parseInt(cpage);

              this.rowsize = maxsize == null ? -1 : Integer.parseInt(maxsize);

 

       }

 

       public void setTable(HtmlTable table) {

              this.table = table;

       }

 

       public void setPageSize(int pageSize) {

              this.pager.setPageSize(pageSize);

       }

 

        

       public void setTotalRows(int totalRows) {

              this.pager.setTotalRows(totalRows);

       }

 

       public void setPageDataCallBack(PageDataCallBack callBack) {

              this.callBack = callBack;

       }

 

       public String render() {

              // 预分页操作处理

              this.process();

              // 内存分页设置其开始行索引为当前页开始索引,如果为数据库查询分页,则设置开始行索引为0

              if (this.mode == 0) {

                     this.table.setStartRowIndex(this.pager.getStartRow());

              } else {

                     this.table.setStartRowIndex(0);

              }

              // 设置表格最大显示行数

              this.table.setMaxRowNum(this.pager.getPageSize());

              // mode=1,数据库查询分页设置分页表格DataModel对象,通常数据库查询也在此时执行

              if (this.callBack != null) {

                     this.table.setDataModel(this.callBack.doPage(this.pager.getStartRow(), this.pager.getPageSize()));

              }

              // 分页表格界面组织,容器DIV

              HtmlElement div = new HtmlElement("div");

              div.addAttribute("class", "horse_data_page");

              div.addAttribute("id", "horse_" + this.id);

              // 分页表格DIV

              HtmlElement div1 = new HtmlElement("div");

              div1.addAttribute("class", "horse_page_table");

              div1.addChild(this.table);

              div.addChild(div1);

              // 分页工具条

              HtmlElement pageBar = new HtmlElement("Table");

              pageBar.addAttribute("width", "100%");

              HtmlElement row = new HtmlElement("tr");

              row.addChild(this.getPageInfo1());

              row.addChild(this.getPageInfo2());

              row.addChild(this.getPageInfo3());

              row.addChild(this.getPageInfo4());

              pageBar.addChild(row);

              div.addChild(pageBar);

              // 操作用到的脚本

              HtmlElement script = new HtmlElement("script");

              script.addAttribute("language", "javascript");

              script.setValue("function pageOperate" + this.id + "(value){var op=document.getElementById(/"__OPERATE__" + this.id + "/");       op.value=value;       op.form.submit();}");

              div.addChild(script);

              return div.toHtml();

       }

 

       /**

        * 处理翻页操作

        */

       private void process() {

              if (this.rowsize > 0) {

                     this.pager.setPageSize(this.rowsize);

              }

              this.pager.setCurrentPage(this.cpage);

              if (this.operate == 0) {

                     this.pager.first();

              } else if (this.operate == 1) {

                     this.pager.previous();

              } else if (this.operate == 2) {

                     this.pager.next();

              } else if (this.operate == 3) {

                     this.pager.last();

              } else if (this.operate == 4) {

                     this.gopage = (this.gopage > this.pager.getTotalPages()) ? this.pager.getTotalPages() : this.gopage;

                     this.pager.setCurrentPage(this.gopage);

              }

 

       }

 

       /**

        * 分页信息1,输出记录信息,总共m页,n条记录

        *

        * @return

        */

       private HtmlElement getPageInfo1() {

              HtmlElement cell1 = new HtmlElement("td");

              int st = this.pager.getStartRow() <= 0 ? 1 : this.pager.getStartRow();

              st++;

              int ed = (this.pager.getStartRow() + this.pager.getPageSize()) > this.pager.getTotalRows() ? this.pager.getTotalRows() : (this.pager.getStartRow() + this.pager

                            .getPageSize());

              cell1.setValue("总共" + this.pager.getTotalPages() + "页," + this.pager.getTotalRows() + "条记录");

              return cell1;

       }

 

       /**

        * 分页信息2,输出 首页 上一页 下一页 末页 翻页信息

        *

        * @return

        */

       private HtmlElement getPageInfo2() {

 

              HtmlElement cell = new HtmlElement("td");

              HtmlElement a1 = new HtmlElement("a");

              HtmlElement a2 = new HtmlElement("a");

              HtmlElement a3 = new HtmlElement("a");

              HtmlElement a4 = new HtmlElement("a");

              a1.setValue(" 首页 ");

              a2.setValue(" 上一页 ");

              a3.setValue(" 下一页 ");

              a4.setValue(" 末页 ");

 

              if (this.pager.getCurrentPage() > 1) {

                     a1.addAttribute("href", "#");

                     a1.addAttribute("onclick", "pageOperate" + this.id + "('0')");

                     a2.addAttribute("href", "#");

                     a2.addAttribute("onclick", "pageOperate" + this.id + "('1')");

              }

 

              if (this.pager.getTotalPages() > this.pager.getCurrentPage()) {

                     a3.addAttribute("href", "#");

                     a3.addAttribute("onclick", "pageOperate" + this.id + "('2')");

                     a4.addAttribute("href", "#");

                     a4.addAttribute("onclick", "pageOperate" + this.id + "('3')");

              }

              cell.addChild(a1);

              cell.addChild(a2);

              if (this.pager.getTotalPages() >= 10) {

                     int p = this.pager.getTotalPages() / 10;

                     int st = (this.pager.getCurrentPage() - 5) > 0 ? (this.pager.getCurrentPage() - 5) : 1;

                     int ed = ((this.pager.getCurrentPage() + 5) <= p) ? (this.pager.getCurrentPage() + 5) : p;

                     for (int i = st; i < ed; i++) {

                            HtmlElement a = new HtmlElement("a");

                            a.addAttribute("href", "#");

                            a.addAttribute("onclick", "pageOperate('5')");

                            cell.addChild(a);

                     }

 

 

              }

              cell.addChild(a3);

              cell.addChild(a4);

 

              return cell;

       }

 

       /**

        * 分页信息3 显示转到某一页

        *

        * @return

        */

       private HtmlElement getPageInfo3() {

              HtmlElement cell3 = new HtmlElement("td");

              HtmlElement input = new HtmlElement("input");

              input.addAttribute("id", "__GOPAGE__" + this.id);

              input.addAttribute("name", "__GOPAGE__" + this.id);

              input.addAttribute("type", "text");

              input.addAttribute("size", "4");//

              input.addAttribute("onKeyUp", "this.value=this.value.replace(///D/g,'')");

              input.addAttribute("value", this.pager.getCurrentPage() + "");

              cell3.setValue("" + input.toHtml() + "");

              HtmlElement b = new HtmlElement("button");

              b.addAttribute("onclick", "pageOperate" + this.id + "('4')");

              b.setValue("转到");

              cell3.addChild(b);

              return cell3;

       }

 

       /**

        * 分页栏信息列4

        *

        * @return

        */

       private HtmlElement getPageInfo4() {

              HtmlElement cell4 = new HtmlElement("td");

              // 当前页隐藏域

              HtmlElement input1 = new HtmlElement("input");

              input1.addAttribute("id", "__CPAGE__" + this.id);

              input1.addAttribute("name", "__CPAGE__" + this.id);

              input1.addAttribute("type", "hidden");

              input1.addAttribute("value", this.pager.getCurrentPage() + "");

              // 操作隐藏域

              HtmlElement input2 = new HtmlElement("input");

              input2.addAttribute("id", "__OPERATE__" + this.id);

              input2.addAttribute("name", "__OPERATE__" + this.id);

              input2.addAttribute("type", "hidden");

              // 当前最大显示数据行

              HtmlElement input3 = new HtmlElement("input");

              input3.addAttribute("id", "__MAXROWSIZE__" + this.id);

              input3.addAttribute("name", "__MAXROWSIZE__" + this.id);

              input3.addAttribute("value", (this.rowsize == -1 ? this.pager.getPageSize() : this.rowsize) + "");

              input3.addAttribute("type", "hidden");

              cell4.addChild(input1);

              cell4.addChild(input2);

              cell4.addChild(input3);

 

              return cell4;

       }

}

这是最终操作分页的类,结合HtmlTablePager实现分页.

6、  例子:

package commons.page;

 

import java.util.ArrayList;

import java.util.List;

 

import javax.servlet.http.HttpServletRequest;

 

import commons.page.model.DataModel;

import commons.page.model.ListDataModel;

 

public class TestPage {

       /**

        * 内存分页测试

        *

        * @param request

        * @return

        */

       public static String se(HttpServletRequest request) {

              int len = 125;

              String[][] data = new String[len][6];

              for (int i = 0; i < data.length; i++) {

                     data[i] = new String[] { "String1-" + i, "String2-" + i, "String3-" + i, "String4-" + i, "String5-" + i, "String6-" + i };

              }

              List<Object[]> d2 = new ArrayList<Object[]>();

              for (int i = 0; i < len; i++) {

                     Object[] o = new Object[] { "list1-" + i, "list2-" + i, "list3-" + i, "list4-" + i, "list5-" + i, "list6-" + i };

                     d2.add(o);

              }

              HtmlTable t = new HtmlTable();

              t.addAttribute("width", "100%");

              t.addAttribute("border", "1");

              // t.setData(data);//数组测试

              t.setData(d2);// List测试

              t.setHeader("标题1,标题3,标题4,标题6,标题5");

              t.setCellCallBack(new CellCallBack() {

                     public HtmlRow doCell(Object data) {

                            // 数组测试

                            // String[] s = (String[] ) data;

                            // HtmlRow row = TableUtil.createRow(new Object[] {

                            // s[0],s[2],s[3],s[5],s[4]});

 

                            // List测试

                            Object[] s = (Object[]) data;

                            HtmlRow row = TableUtil.createRow(new Object[] { s[0], s[2], s[3], s[5], s[4] });

 

                            return row;

                     }

              });

 

              PageDataTable p = new PageDataTable(request, 0);

              p.setPageSize(12);

              p.setTotalRows(len);

              p.setTable(t);

              return p.render();

       }

 

       /**

        * 查询分页测试

        *

        * @param request

        * @return

        */

       public static String se2(HttpServletRequest request) {

              final int len = 125;

              HtmlTable t = new HtmlTable();

              t.setHeader("标题1,标题3,标题4,标题6,标题5");

              PageDataTable p = new PageDataTable(request, "__my_2098_", 1);

              p.setPageSize(9);

              p.setTotalRows(len);

              p.setPageDataCallBack(new PageDataCallBack() {

                     @Override

                     public DataModel doPage(int startRow, int maxRow) {

                            List<Object[]> d2 = new ArrayList<Object[]>();

                            // 下面为测试所用,模拟数据库查询,实际使用时将startRow,maxRow两个变量传入SQL语句查询数据库获取相应的记录

                            int endRow = (startRow + maxRow) > len ? len : (startRow + maxRow);

                            for (int i = startRow; i < endRow; i++) {

                                   Object[] o = new Object[] { "list1-" + i, "list2-" + i, "list3-" + i, "list4-" + i, "list5-" + i, "list6-" + i };

                                   d2.add(o);

                            }

                            DataModel dataModel = new ListDataModel();

                            dataModel.setWrappedData(d2);

                            return dataModel;

                     }

              });

              p.setTable(t);

              return p.render();

       }

}

 

 

 

JSP页面:

 

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<%@page import="commons.page.TestPage"%>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Insert title here</title>

<style type="text/css">

@IMPORT url("<%=request.getContextPath()%>/css/page_gird.css");

</style>

</head>

<body>

<div onclick="op(1)">sadas</div>

<form method="post">

<%

       out.print(TestPage.se(request));

%> <%

       out.print(TestPage.se2(request));

 %>

</form>

</body>

</html>

 

page_gird.css文件

 

@CHARSET "UTF-8";

.horse_data_page {

       height: auto;

       width: 100%;

       padding: 0px;

       margin: 0px;

}

.horse_data_page .horse_page_table {

       background-color: #FFFFFF;

       width: 100%;

       padding: 0px;

       margin: 0px;

}

.horse_data_page .horse_page_table table {

       width: 100%;

       border-collapse:collapse;

       border-spacing: 0px;

       empty-cells : show;

       table-layout:fixed;

       border-top-width: 4px;

       border-right-width: 0px;

       border-bottom-width: 4px;

       border-left-width: 0px;

       border-top-style: solid;

       border-right-style: solid;

       border-bottom-style: solid;

       border-left-style: solid;

       border-top-color: #3399CC;

       border-right-color: #CCCCCC;

       border-bottom-color: #3399CC;

       border-left-color: #CCCCCC;

       background-color: #FFFFFF;

}

.horse_data_page .horse_page_table table thead th {

       border: 1px solid #CCCCCC;

       padding: 4px;

       background-color: #E3E3E3;

       font-size:14px;

       text-align:center;

       white-space:nowrap;

}

.horse_data_page .horse_page_table table tbody td {

       border: 1px solid #CCCCCC;

       padding: 3px;

       font-size:12px;

       overflow:hidden;

       white-space:nowrap;

       text-overflow :   ellipsis;

}

 

.horse_data_page  input {

       border: 1px solid #CCCCCC;

       background-color: #FFFFFF;

       font-size:12px;

}

.horse_data_page button {

       border: 1px solid #CCCCCC;

       background-color: #FFFFFF;

       font-size:12px;

       FILTER:progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorstr='#EBEBEB', endColorstr='#CCCCCC');

}

.horse_data_page   table {

       border-right-width: 1px;

       border-bottom-width: 1px;

       border-left-width: 1px;

       border-right-style: solid;

       border-bottom-style: solid;

       border-left-style: solid;

       border-right-color: #CCCCCC;

       border-bottom-color: #CCCCCC;

       border-left-color: #CCCCCC;

 background-color: #EBEBEB;

       border-collapse:collapse;

       width: 100%;

       font-size:12px;

}

.horse_data_page  table td {

       border: 0px solid #666666;

       font-size:12px;

       padding: 2px;

       margin: 0px;

}.horse_data_page a:link {

       text-decoration: none;

}

.horse_data_page a:visited {

       text-decoration: none;

}

.horse_data_page a:hover {

       text-decoration: none;

}

.horse_data_page a:active {

       text-decoration: none;

}

最终效果图:

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值