登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

清风幻影的博客

Where there is love, I will be there.

 
 
 

日志

 
 
关于我

同是天涯沦落人,相逢何必曾相识. 天生我材必有用,千金散尽还复来. 天若有情天亦老,人间正道是沧桑. 月影西斜人已去, 堤上梅花情依旧, 此情故已成追忆, 美人如玉夜留香

也来介绍一下 extremeTable   

2010-02-04 10:23:39|  分类: eXtremeTable |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

http://www.blogjava.net/davidxu/archive/2005/08/09/9683.aspx

也来介绍一下 extremeTable

1、何为 extremeTable,又一个开源taglib

      extremeTable,开源的jsp 自定义标签,以表格的形式显示数据,当前最新版本为 1.0.1-M1.

它是一个类似display tag,valueList 等开源产品.

homepage: http://extremecomponents.org/

download: http://sourceforge.net/projects/extremecomp/

开源产品作者:

Jeff Johnston ,现居住美国,圣路易斯.

                六年web应用软件开发经验,eXtremeComponents最初的创建者. 负责设计及大部分的编码。

其它还包括Paul Horn ,eXtremeTree的技术设计, 以及大部分的编码;

Dave Goodin,Brad Parks等.

主要特色

1、导出EXCEL以及pdf无需再另写jsp(这个基本与valuelist作比较,因为以前用valueList的时候每写一个table都要再写一个excel.jsp)

2、扩展性比较强,基本上想怎样改就怎样改,对jar影响比较少。

3、另外据官方声称有以下四点

  • Fast ( 本人曾小测一次,三千纪录情况下,效率基本与valuelist持平)
  • Efficient
  • Easy ( 得确很容易使用与理解加扩展)
  • Reliable

    安装要求

    1、Servlet 2.3 或更高

    2、 JDK 1.3.1 或更高

    最小的Jars需求

    1、commons-beanutils 1.6

    2、commons-collections 3.0

    3、 commons-lang 2.0

    4、 commons-logging 1.0.4

    5、 standard 1.0.2

    PDF 导出要用到的包:

    1、 avalon-framework 4.0

    2、batik 1.5-fop-0.20-5

    3、 fop 0.20.5

    4、 xalan 2.5.1

    5、 xercesImpl 2.6.1

    6、 xml-apis 2.0.2

    XLS 导出要用到的包:

    1、 poi-2.5.1.jar

    2、安装与测试

    下载解压到的主要文件包括

    [1]src源文件

    [2]extremecomponents.jar以及其它所依赖的包

    [3]tld文件

    extremecomponents.tld

    [4]一组默认样式及图片

    extremecomponents.css

    [5]用以校验安装的测试页面

    test.jsp

    [6]doc文档,比较详细

    快速配置安装

    web app目录结构

    /ROOT

         /WEB-INF/web.xml

            /tld/extremecomponents.tld

               /lib

               /classes/extremecomponents.properties

                       [extremecomponents.properties文件可到source\org\extremecomponents\table\core\中得到]

          /images/*.jpg [一组默认样式及图片]

          /css/extremecomponents.css

          /test.jsp

          /index.jsp [用于学习以及扩展测试用代码请见下]

        

    web.xml 配置

    包括taglib uri 定义以及导出文件filter,由于只是手板功夫,这里就略过了,相关代码如下:

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客<taglib>

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客<taglib-uri>/tld/extremecomponents</taglib-uri>

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客<taglib-location>/WEB-INF/tld/extremecomponents.tld</taglib-location>

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客</taglib>

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客<filter>

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客<filter-name>eXtremeExport</filter-name>

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客<filter-class>org.extremecomponents.table.filter.ExportFilter</filter-class>

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客</filter>

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客<filter-mapping>

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客<filter-name>eXtremeExport</filter-name>

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客<url-pattern>/*</url-pattern>

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客</filter-mapping>

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客

    配置好所有后,开tomcat,测试浏览http://your_web_app/test.jsp,看到

    Congratulations!! You have successfully configured eXtremeTable!

    恭喜你,这表示安装成功!

    3、动手学习这个taglib

    建index.jsp页面,修改代码如下

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客<%@ page contentType="text/html;charset=GBK"%>

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客<%@ page import="java.util.*"%>

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客<%@ taglib uri="/tld/extremecomponents" prefix="ec" %>

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客<!-- 在本页要用到jstl-->

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客<!--使用include的方式-->

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客<link rel="stylesheet" type="text/css" href="<c:url value="/extremecomponents.css"/>">

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客<%

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客    List goodss = new ArrayList();

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客    for (int i = 1; i <= 10; i++)

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客{

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客        Map goods = new java.util.HashMap();

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客        goods.put("code", "A00"+i);

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客        goods.put("name", "面包"+i);

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客        goods.put("status", "A:valid");

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客        goods.put("born", new Date());

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客        goodss.add(goods);

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客    }

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客    request.setAttribute("goodss", goodss);

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客%>

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客<ec:table

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客 collection="goodss"

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客    action="${pageContext.request.contextPath}/test.jsp"

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客    imagePath="${pageContext.request.contextPath}/images/*.gif"

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客    cellpadding="1"

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客    title="my bread">

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客<ec:column property="code"/>

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客<ec:column property="name"/>

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客<ec:column property="status"/>

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客<ec:column property="born" cell="date" format="yyyy-MM-dd"/>

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客</ec:table>

    效果如下:

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客

    [1] 1.0.1-M1 版支持国际化

    修改web.xml文件增加

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客<context-param>

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客   <param-name>extremecomponentsResourceBundleLocation</param-name>

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客   <param-value>com.itorgan.tags.extreme.extremetableResourceBundle</param-value>

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客</context-param>

    意指到 com.itorgan.tags.extreme 下找 extremetableResourceBundle_[language]_[country].properties 文件

    extremetableResourceBundle_en_US.properties代码如下

    table.statusbar.resultsFound={0} results found, displaying {1} to {2}

    table.statusbar.noResultsFound=There were no results found.

    table.toolbar.showAll=Show All

    extremetableResourceBundle_zh_CN.properties如下.

    table.statusbar.resultsFound={0} \条\纪\录\符\合\条\件, \现\在\是\第 {1} \至 {2} \条\纪\录

    table.statusbar.noResultsFound=\没\有\要\查\询\的\纪\录\。

    table.toolbar.showAll=\所 \有

    补充:中文 - > Unicode编码 可通过反编译class文件或用native2ascii命令得到 。

    然后在table标签中增加locale属性即可切换

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客<ec:table

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客    ………………

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客    ………………

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客    ………………

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客    locale="en_US"

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客>

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客<ec:table

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客    ………………

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客    ………………

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客    ………………

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客    locale="zh_CN"

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客>

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客

    [2] 保留table的上一次状态

          是指,不管跳转到另一个后再返回,extremeTable会将之前的Filter,Sort参数保存到session中,以至返回看到的页面还是之前的状态.

    实现操作方法:

    修改extremecomponents.properties文件

    table.useSessionFilterSortParam=foo

    saveFilterSort="true" 注意:saveFilterSort="true"不能在properties文件中配置,只能在页面中设

     <ec:table

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客    ……………………

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客    saveFilterSort="true"

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客/ec:table>

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客<a href="1.jsp">跳到</a>

    新建一页面用于跳转的页面 1.jsp

    代码为

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客<a href="test.jsp?foo=true">Back</a>

    [3] 样式修改

    基本的HTML结构

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客<div class="eXtremeTable" >

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客<table border="0"  cellpadding="0"  cellspacing="0"  width="100%" >

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客    <tr>

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客        <td class="title" ><span><!--标题--></span></td>

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客        <td align="right" >

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客        <table border="0"  cellpadding="0"  cellspacing="1"  class="toolbar" >

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客            <tr>

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客      <form name="pres_toolbar"  action="/extremesite/public/demo/presidents.jsp" >

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客            <!--工具栏,包括上一页,下一页以及导出-->

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客            </tr>

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客            <tr> 

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客      </form>

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客            </tr>

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客        </table>

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客        </td>

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客    </tr>

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客</table>

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客<table id="pres"  border="0"  cellspacing="2"  cellpadding="0"  width="100%"  class="tableRegion" >

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客    <tr>

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客        <td colspan="6" >

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客        <table border="0"  cellpadding="0"  cellspacing="0"  width="100%" >

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客            <tr>

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客                <td class="statusBar" >43 results found, displaying 1 to 12 </td>

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客                <td class="filterButtons" ></td>

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客            </tr>

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客        </table>

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客        </td>

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客    </tr>        

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客<form name="pres_filter"  action="/extremesite/public/demo/presidents.jsp" >

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客    <tr class="filter"  id="filter" >

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客        <!--过滤条件的input框-->

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客    </tr>

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客</form>

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客    <tr>

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客        <!--tableHead-->

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客    </tr>

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客    <tbody class="tableBody" >

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客    <tr>

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客        <!--column-->

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客    </tr>

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客    </tbody>

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客</table>

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客</div>

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客

    extremeTable支持样式快速切换.可自定的样式包括column 的td以及table的一些属性,例如cellpadding等,

    另本人发现,在properties中如下设置tableHeader的样式是不行的.不知道是否一个BUG

    table.headerClass=itoTableHeader

    table.headerSortClass=itoTableHeaderSort

    只能继承一个HeaderCell

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客public class HeaderCell extends org.extremecomponents.table.cell.HeaderCell

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客{

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客    public final static String TABLE_HEADER = "itoTableHeader";

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客    public final static String TABLE_HEADER_SORT = "itoTableHeaderSort";

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客

    新的样式代码:

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客<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>

    效果见下:

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客

    [4] 实现 table width 自动累加

    原来的extremeTable 宽度要自己set。不会自动能过下面的column累加。

    本人作了个修改以达到自动累加,省得自己加写上去:

    查看htmlView.java 两处地方 

    toolbarPlacement

    tableStart可见两处地方要修改的

    [5] custom cell

    在properties文件中我们可观察到:

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客table.cell_=display

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客table.cell_currency=org.extremecomponents.table.cell.NumberCell

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客table.cell_number=org.extremecomponents.table.cell.NumberCell

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客table.cell_display=org.extremecomponents.table.cell.DisplayCell

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客table.cell_date=org.extremecomponents.table.cell.DateCell

    当 column 默认使用org.extremecomponents.table.cell.DisplayCell

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客public class DisplayCell extends BaseCell 也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客{

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客    public String html() 也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客{

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客        HtmlBuilder html = new HtmlBuilder();

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客        html.append(startTD());

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客        Object value = column.getValue();

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客        if (value != null && StringUtils.isNotEmpty(value.toString())) 也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客{

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客            html.append(value);

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客        } else 也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客{

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客            html.append("&nbsp;");

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客        }

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客        html.append(endTD());

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客        return html.toString();

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客    }

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客}

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客

    ec已其它cell

    日期格式化: cell = " date " format = " yyyy-MM-dd "

    数字格式化: cell="currency" format="###,###,##0.00"

    另外,extremeTable支持自定义cell

    在这里我以一个简单的例子[以input框的形式出现] 说明如何实现这一方便的扩展

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客public class DemoInput extends BaseCell

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客{

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客      public String html()

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客{

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客        Integer rowNum = rowcount;

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客        HtmlBuilder html = new HtmlBuilder();

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客        html.append(startTD());

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客        Object value = column.getValue();

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客        HtmlBuilder input = new HtmlBuilder();

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客        input.input("text");

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客        input.name(column.getProperty() + "_" + rowNum);

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客        input.value(value.toString());

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客        input.close();

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客        html.append(input.toString());

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客        html.append(endTD());

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客        return html.toString();

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客    }

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客}

    properties文件增加

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客table.cell_demoInput =org.extremecomponents.table.cell.DemoInput 

    jsp代码

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客<ec:column property="code" title="编号" width="100" cell="demoInput" styleClass="GridTd"/>

    效果显示为

    当然这只是一个简单的demo以说明如何自定义cell

    如上面你可以简单的实现同样功能

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客<ec:column property="code" title="编号" width="100" styleClass="GridTd">

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客<input type="text" value="${goodss.code}" name="code_${ROWCOUNT}">

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客</ec:column>

    [6]Extended Attributes

    新版本支持Extended Attributes,方便了用户扩展,记得0.9版本时还要我修改N个地方,现在为table,column增加attribute方便多了.

    为table增加一个height的属性

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客public class TableTag extends org.extremecomponents.table.tag.TableTag

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客{

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客    //div 的高度

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客    private String height;

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客    public String getHeight()

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客{

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客        return height;

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客    }

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客    public void setHeight(String height)

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客{

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客        this.height = height;

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客    }

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客    public void addExtendedAttributes(Attributes attributes)

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客{

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客        attributes.addAttribute("height", getHeight());

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客    }

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客    /**//**

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客     * set the new attribuer to null - by ito

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客     */

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客    public void release()

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客{

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客        super.release();

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客        height = null;

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客    }

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客}

    然后就可以通过

    model.getTableHandler().getTable().getAttribute("height")取得这个值.可以方便扩展.

    [7] 解决excel中文问题

    继承XlsView.java

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客    private void body(BaseModel model, Column column, boolean isFirstColumn, boolean isLastColumn) 也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客{

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客      //原来的代码略

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客        hssfCell.setEncoding(HSSFCell.ENCODING_UTF_16); //解决中文乱码

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客//原来的代码略

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客        

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客    }

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客    private void createHeader(BaseModel model) 也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客{

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客       //原来的代码略

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客        hssfCell.setEncoding(HSSFCell.ENCODING_UTF_16); //解决中文乱码

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客//原来的代码略

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客        

    也来介绍一下 extremeTable  - 清风幻影 - 清风幻影的博客   }

    [8] 解决pdf中文问题

    帮POF注册中文字体,再修改export view即可解决

    [9] Pagination

    [10] 其它亮点

    A sortable 与 exportable 属性 ,分别指可否排序,可否导出. 值为 false/true

    B 可以直接在<ec:column></e:column>中加html代码.

        并可用{collectionName.objectName}类似的语法取得当前object的成员变量值

    C  ${ROWCOUNT}可取当前row num,是指以1开始计算 

    D  ec另一亮点就帮我们写好了form ,如上代码:

          <ec:form name="mainform" action="goods.do"> </ec:form> 设置form name以及action

    参考文档

    http://extremecomponents.org/extremesite/public/documentation.jsp

  •   评论这张
     
    阅读(774)| 评论(0)

    历史上的今天

    在LOFTER的更多文章

    评论

    <#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
     
     
     
     
     
     
     
     
     
     
     
     
     
     

    页脚

    网易公司版权所有 ©1997-2018