1、何为 extremeTable,又一个开源taglib
extremeTable,开源的jsp 自定义标签,以表格的形式显示数据,当前最新版本为 1.0.1-M1. 它是一个类似display tag,valueList 等开源产品. homepage: http:/// download: http:///projects/extremecomp/ 开源产品作者: Jeff Johnston ,现居住美国,圣路易斯. 六年web应用软件开发经验,eXtremeComponents最初的创建者. 负责设计及大部分的编码。 其它还包括Paul Horn ,eXtremeTree的技术设计, 以及大部分的编码; 安装要求 1、Servlet 2.3 或更高 2、 JDK 1.3.1 或更高 最小的Jars需求 PDF 导出要用到的包: 下载解压到的主要文件包括 [3]tld文件 [4]一组默认样式及图片 [5]用以校验安装的测试页面 [6]doc文档,比较详细 web.xml 配置 <taglib>
<taglib-uri>/tld/extremecomponents</taglib-uri> <taglib-location>/WEB-INF/tld/extremecomponents.tld</taglib-location> </taglib> <filter>
<filter-name>eXtremeExport</filter-name> <filter-class>org.extremecomponents.table.filter.ExportFilter</filter-class> </filter> <filter-mapping> <filter-name>eXtremeExport</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
<%@ page contentType="text/html;charset=GBK"%>
<%@ page import="java.util.*"%> <%@ taglib uri="/tld/extremecomponents" prefix="ec" %> <!-- 在本页要用到jstl--> <%@ taglib prefix="c" uri="http://java./jsp/jstl/core" %> <!--使用include的方式--> <link rel="stylesheet" type="text/css" href="<c:url value="/extremecomponents.css"/>"> <% List goodss = new ArrayList(); for (int i = 1; i <= 10; i++) { Map goods = new java.util.HashMap(); goods.put("code", "A00"+i); goods.put("name", "面包"+i); goods.put("status", "A:valid"); goods.put("born", new Date()); goodss.add(goods); } request.setAttribute("goodss", goodss); %> <ec:table collection="goodss" action="${pageContext.request.contextPath}/test.jsp" imagePath="${pageContext.request.contextPath}/images/*.gif" cellpadding="1" title="my bread"> <ec:column property="code"/> <ec:column property="name"/> <ec:column property="status"/> <ec:column property="born" cell="date" format="yyyy-MM-dd"/> </ec:table>
<context-param>
<param-name>extremecomponentsResourceBundleLocation</param-name> <param-value>com.itorgan.tags.extreme.extremetableResourceBundle</param-value> </context-param>
extremetableResourceBundle_en_US.properties代码如下 extremetableResourceBundle_zh_CN.properties如下. 然后在table标签中增加locale属性即可切换 <ec:table
……………… ……………… ……………… locale="en_US" > <ec:table ……………… ……………… ……………… locale="zh_CN" >
<ec:table
…………………… saveFilterSort="true" /ec:table> <a href="1.jsp">跳到</a> 新建一页面用于跳转的页面 1.jsp <a href="test.jsp?foo=true">Back</a>
/ec:table
<div class="eXtremeTable" >
<table border="0" cellpadding="0" cellspacing="0" width="100%" > <tr> <td class="title" ><span><!--标题--></span></td> <td align="right" > <table border="0" cellpadding="0" cellspacing="1" class="toolbar" > <tr> <form name="pres_toolbar" action="/extremesite/public/demo/presidents.jsp" > <!--工具栏,包括上一页,下一页以及导出--> </tr> <tr> </form> </tr> </table> </td> </tr> </table> <table id="pres" border="0" cellspacing="2" cellpadding="0" width="100%" class="tableRegion" > <tr> <td colspan="6" > <table border="0" cellpadding="0" cellspacing="0" width="100%" > <tr> <td class="statusBar" >43 results found, displaying 1 to 12 </td> <td class="filterButtons" ></td> </tr> </table> </td> </tr> <form name="pres_filter" action="/extremesite/public/demo/presidents.jsp" > <tr class="filter" id="filter" > <!--过滤条件的input框--> </tr> </form> <tr> <!--tableHead--> </tr> <tbody class="tableBody" > <tr> <!--column--> </tr> </tbody> </table> </div>
public class HeaderCell extends org.extremecomponents.table.cell.HeaderCell
{ public final static String TABLE_HEADER = "itoTableHeader"; public final static String TABLE_HEADER_SORT = "itoTableHeaderSort"; } 新的样式代码: <LINK REL="stylesheet" HREF="<c:url value="/style.css"/>" TYPE="text/css">
<ec:table collection="goodss" action="${pageContext.request.contextPath}/test.jsp" imagePath="${pageContext.request.contextPath}/images/*.gif" cellpadding="1" title="my bread" saveFilterSort="true" locale="zh_CN" > <ec:column property="code" title="编号" width="100" styleClass="GridTd"/> <ec:column property="name" title="名称" width="200" styleClass="GridTd"/> <ec:column property="status" title="状态" width="80" styleClass="GridTd"/> <ec:column property="born" title="生产日期" width="100" cell="date" format="yyyy-MM-dd" styleClass="GridTd"/> </ec:table> 效果见下: table.cell_=display
table.cell_currency=org.extremecomponents.table.cell.NumberCell table.cell_number=org.extremecomponents.table.cell.NumberCell table.cell_display=org.extremecomponents.table.cell.DisplayCell table.cell_date=org.extremecomponents.table.cell.DateCell 当 column 默认使用org.extremecomponents.table.cell.DisplayCell public class DisplayCell extends BaseCell {
public String html() { HtmlBuilder html = new HtmlBuilder(); html.append(startTD()); Object value = column.getValue(); if (value != null && StringUtils.isNotEmpty(value.toString())) { html.append(value); } else { html.append(" "); } html.append(endTD()); return html.toString(); } } ec已其它cell 日期格式化: cell = " date " format = " yyyy-MM-dd " 数字格式化: cell="currency" format="###,###,##0.00"
public class DemoInput extends BaseCell
{ public String html() { Integer rowNum = rowcount; HtmlBuilder html = new HtmlBuilder(); html.append(startTD()); Object value = column.getValue(); HtmlBuilder input = new HtmlBuilder(); input.input("text"); input.name(column.getProperty() + "_" + rowNum); input.value(value.toString()); input.close(); html.append(input.toString()); html.append(endTD()); return html.toString(); } }
table.cell_demoInput =org.extremecomponents.table.cell.DemoInput
jsp代码 <ec:column property="code" title="编号" width="100" cell="demoInput" styleClass="GridTd"/>
效果显示为
<ec:column property="code" title="编号" width="100" styleClass="GridTd">
<input type="text" value="${goodss.code}" name="code_${ROWCOUNT}"> </ec:column>
public class TableTag extends org.extremecomponents.table.tag.TableTag
{ //div 的高度 private String height; public String getHeight() { return height; } public void setHeight(String height) { this.height = height; } public void addExtendedAttributes(Attributes attributes) { attributes.addAttribute("height", getHeight()); } /**//** * set the new attribuer to null - by ito */ public void release() { super.release(); height = null; } } 然后就可以通过
private void body(BaseModel model, Column column, boolean isFirstColumn, boolean isLastColumn) {
//原来的代码略 hssfCell.setEncoding(HSSFCell.ENCODING_UTF_16); //解决中文乱码 //原来的代码略 } private void createHeader(BaseModel model) { //原来的代码略 hssfCell.setEncoding(HSSFCell.ENCODING_UTF_16); //解决中文乱码 //原来的代码略 }
|
|
来自: nbtymm > 《Servlet&Jsp》