像一顆晨土

          常用鏈接

          統(tǒng)計(jì)

          blogs

          life

          最新評(píng)論

          介紹ExtremeTable的下一代Jmesa

          說(shuō)到ExtremeTable(以下簡(jiǎn)稱ET,呃,,,ET.....),可以說(shuō)不知道的人甚少.不過(guò)估計(jì)用的也未必多罷了.今天,給大家介紹一個(gè)由ET的作者重新實(shí)現(xiàn)的一套關(guān)于Table的API.JMesa.
          我是一個(gè)偶然的機(jī)會(huì)知道Jmesa,我在做一個(gè)數(shù)據(jù)展現(xiàn)系統(tǒng)的時(shí)候想尋找ET的幫忙,但發(fā)現(xiàn)ET己不再更新,作者把精力轉(zhuǎn)移到了新的項(xiàng)目中,也就是這個(gè) JMesa.這個(gè)項(xiàng)目的目的是為開(kāi)發(fā)者提供更有效的表格展現(xiàn)的API,而不是簡(jiǎn)單的TagLib.無(wú)論從靈活性,易擴(kuò)展性,易用性,均比ET上了一個(gè)層 次.最近Release的版本里面,并不包括TagLib.而在下一個(gè)版本(2.1.0)將會(huì)加入TagLib,目前TagLib己經(jīng)可用,在SVN里已 有.只是等待下一個(gè)版本的發(fā)布,其間會(huì)有一些更新,不過(guò)會(huì)兼容目前的TagLib的.
          假如我從API開(kāi)始介紹JMesa,恐怕并不是個(gè)好的辦法,像我以前的文章里面有介紹,結(jié)果反響不大.這次決定從TagLib入手,來(lái)給大家介紹一下Jmesa.
          大家可以從附件里拿到一個(gè)Demo.注意Demo依賴JMesa以及其他Lib.在Lib文件夾下有詳細(xì)說(shuō)明.
          現(xiàn)在來(lái)看看JMesa的使用:
          1. <jm:table id="product" items="products" caption="product listing">  
          2.     <jm:column property="name" sortable="true" filterable="true"/>  
          3.     <jm:column property="price" />  
          4.     <jm:column property="createdTime" />  
          5.     <jm:column property="id" title="edit">  
          6.         <a href="viewProduct.action?id="<jm:property/>"><jm:property name="name"/></a>  
          7.     </jm:column>  
          8. </jm:table>  

          估計(jì)比較容易看得懂的代碼吧.
          Jmesa 的檢簽規(guī)范當(dāng)中只有三個(gè)Tag:Table,Row,Column.而當(dāng)前的TagLib實(shí)現(xiàn)中只實(shí)現(xiàn)了Table和Column兩個(gè)(Row是可選 的).另加一個(gè)Property的Tag.此階段,Property的Tag是很有用的,其起到的作用與Webwork的PropertyTag相差無(wú) 幾, 用來(lái)獲得對(duì)象的某個(gè)屬性.之所以使用Property Tag是因?yàn)楫?dāng)前的TagLib有個(gè)限制就是暫時(shí)不支持如JSTL的${}這種寫(xiě)法.將來(lái)會(huì)支持,屆時(shí)Property Tag也會(huì)繼續(xù)獲得兼容.Jeff比較傾向于使用迭代的方式實(shí)現(xiàn)Tag,那樣可以支持${}這樣的寫(xiě)法.不過(guò)作為T(mén)agLib的開(kāi)始,問(wèn)題不大.有時(shí)間再 重構(gòu)一下TagLib,支持JSTL的寫(xiě)法.
          好了,來(lái)說(shuō)一說(shuō)這些Tag的使用方法:
          Table:
          Attribute Description
          id 表格的ID(必須)
          items 對(duì)象或者M(jìn)ap的集合 (必須)
          caption 表格的標(biāo)題
          theme 表格的主題,自定義樣式
          exportTypes 使用逗號(hào)分割導(dǎo)出的類型,目前支持導(dǎo)出類型有CSV,Excel
          width 表格寬度
          style 即表格的Style屬性
          styleClass 使用的Css的Class名字
          border 表格寬
          cellpadding 表格屬性
          cellspacing 表格屬性
          實(shí)際上,真正Release的版本里面將會(huì)加上var以及Limit屬性.
          var屬性值即在Column標(biāo)簽里可以獲得的對(duì)象變量.
          Limit屬性是保存在當(dāng)前請(qǐng)求的Limit的對(duì)象名.
          Row:
          Attribute Description
          highlighter 是否高亮顯示
          onclick 點(diǎn)擊事件
          onmouseout 鼠標(biāo)移出事件
          onmouseover 鼠標(biāo)移入事件
          該Tag是可選的.實(shí)際上Jmesa提供了一系列默認(rèn)的事件響應(yīng),有必要的情況下才使用.
          Column:
          Attribute Description
          property Java對(duì)象或Map的屬性名
          title 列的名稱
          filterable 是否可按過(guò)濾條件查找
          sortable 是否要排序
          width 列寬
          style Style屬性
          styleClass 使用的Css的Class的名字
          ColumnTag的使用方法有下面幾種:
          1. <jm:column property="name"/>  

          將僅僅輸出對(duì)象中Name屬性值.列名是Name
          1. <jm:column property="name" title="名字" sortable="true" filterable="false"/>  

          這樣可以得到自定義的列名,可以讓列可查找,可排序,當(dāng)然你Server端需要相應(yīng)提供排序及查找功能.不過(guò)就算你不提供,客戶端也會(huì)把當(dāng)前結(jié)果排序和查找的.
          1. <jm:column property="id" title="edit">   
          2.     <a href="viewProduct.action?id="<jm:property/>"><jm:property name="name"/></a>   
          3. </jm:column>    

          這里結(jié)合了PropertyTag.實(shí)現(xiàn)自定義列顯示.可以靈活定制自己的單元格.
          在ColumnTag里面,使用PropertyTag的時(shí)候,可以指定Name屬性,如果不指定則使用當(dāng)前Column的Property屬性值.
          以后將支持:
          1. <jm:column property="id" title="edit">   
          2.     <a href="viewProduct.action?id=${id}">${name}</a>   
          3. </jm:column>    
          這樣的寫(xiě)法.當(dāng)然會(huì)繼續(xù)兼容PropertyTag,盡管不是Tag規(guī)范里的東西.

          相信經(jīng)過(guò)上面的一番介紹,大家對(duì)Jmesa有一定的感性認(rèn)識(shí)了吧.還沒(méi)有?下載Demo,扔進(jìn)Tomcat 的App里跑一下就明白了.
          有什么建議,請(qǐng)一定要告訴我 :).

          附件在:http://www.javaeye.com/topics/download/4eaaa38d-e838-459d-aef2-3be6c4d043df

          posted on 2007-08-01 01:31 艾塵 閱讀(7211) 評(píng)論(11)  編輯  收藏 所屬分類: pick up

          評(píng)論

          # re: 介紹ExtremeTable的下一代Jmesa 2007-08-01 09:15 aaa

          可以編輯單元格嗎  回復(fù)  更多評(píng)論   

          # re: 介紹ExtremeTable的下一代Jmesa 2007-08-01 09:20 dreamstone

          不錯(cuò),可以試試。  回復(fù)  更多評(píng)論   

          # re: 介紹ExtremeTable的下一代Jmesa[未登錄](méi) 2007-08-01 10:40 小天

          不能跑耶,我用tomcat5.0.28 , jdk1.5去跑,是不行的,出現(xiàn)如下訊息
          「javax.servlet.ServletException: Bad version number in .class file
          org.apache.jasper.servlet.JspServlet.service(JspServlet.java:244)
          javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


          不知是否還有其它人 跟我一樣  回復(fù)  更多評(píng)論   

          # re: 介紹ExtremeTable的下一代Jmesa 2007-08-01 15:15 LeeYue_0530@hotmail.com

          比Display tag 略強(qiáng)一點(diǎn),但是原理還是一樣的,對(duì)打數(shù)據(jù)量的分頁(yè),還是沒(méi)有現(xiàn)成的處理機(jī)制。還是需要手工實(shí)現(xiàn)。  回復(fù)  更多評(píng)論   

          # re: 介紹ExtremeTable的下一代Jmesa[未登錄](méi) 2007-08-01 15:53 jeff

          只要不是邏輯分頁(yè)。不管是什么,總得自己在Server端分頁(yè)的。
          樓上說(shuō)的不需要手工實(shí)現(xiàn)分頁(yè),是否有理想的代碼模型可以看看?  回復(fù)  更多評(píng)論   

          # re: 介紹ExtremeTable的下一代Jmesa 2007-08-02 10:23 Tin

          ExtremeTable很早就實(shí)現(xiàn)自定義分頁(yè)實(shí)現(xiàn)了,可以自己處理分頁(yè)邏輯,和Display Tag的基于集合的不同呀。Jmesa既然是下一代應(yīng)該也支持吧。
          Jeff Johnston這個(gè)人非常聰明勤奮,它的項(xiàng)目一般都是非常活躍的,以后一定會(huì)越來(lái)越好。  回復(fù)  更多評(píng)論   

          # re: 介紹ExtremeTable的下一代Jmesa 2007-10-19 01:23 nap

          最近一直在用extremetable 1.0.1,后來(lái)出了個(gè)1.0.3,但發(fā)現(xiàn)好象要jdk1.5,公司一直jdk1.4.2就放棄了。
          在google中搜extremetable的時(shí)候把我?guī)У搅薺mesa,新的這個(gè)應(yīng)該也是1.5的吧?
          曾經(jīng)本機(jī)跑了一下,印象中extremetable原來(lái)文本框的過(guò)濾控件感覺(jué)很好用,結(jié)果jmesa好象換成下拉的什么東西了,點(diǎn)著點(diǎn)著偶爾好象失靈了,可能是bug。記不清了。反正jmesa印象一般啊。
          現(xiàn)在在想辦法把extremetable 1.0.1用好!某些地方還有疑惑。以后留言再請(qǐng)教樓主吧。
          喜歡歸喜歡,但擔(dān)心還是有的,這個(gè)項(xiàng)目是一個(gè)人維護(hù)的,作者萬(wàn)一中途留下一個(gè)還有bug的release就忙別的工作去了,會(huì)給公司項(xiàng)目帶來(lái)某些小風(fēng)險(xiǎn)吧,我又不牛,發(fā)現(xiàn)bug也不知道怎么改,那樣就郁悶死了。哈哈。  回復(fù)  更多評(píng)論   

          # re: 介紹ExtremeTable的下一代Jmesa 2007-12-24 10:12 jwd456

          @小天
          我的你的情況一樣!  回復(fù)  更多評(píng)論   

          # re: 介紹ExtremeTable的下一代Jmesa 2008-05-06 08:39 彭勇

          我在使用過(guò)程中出現(xiàn)以下錯(cuò)誤.請(qǐng)幫忙看哈
          0 [http-8080-Processor2] DEBUG org.jmesa.limit.LimitActionFactoryImpl - Defaulting to Page 1
          63 [http-8080-Processor2] DEBUG org.jmesa.core.ItemsImpl - org.jmesa.limit.LimitImpl@ecd92c[id=accountList,export=<null>,rowSelect=org.jmesa.limit.RowSelectImpl@fccada[page=1,maxRows=15,rowEnd=15,rowStart=0,totalRows=132],filterSet=org.jmesa.limit.FilterSetImpl@69ed4a[],sortSet=org.jmesa.limit.SortSetImpl@59cbda[]]
          78 [http-8080-Processor2] ERROR org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/Demo].[debugjsp] - Servlet.service() for servlet debugjsp threw exception
            回復(fù)  更多評(píng)論   

          # re: 介紹ExtremeTable的下一代Jmesa 2008-05-06 08:41 彭勇

          請(qǐng)幫忙解釋哈
          mesa:tableFacade id="accountList" items="${Accounts}" var="bean"

          id代表是什么
          items代表是什么
          var代表是什么
          能否解釋詳細(xì)點(diǎn)!!
          小弟不勝感激。
            回復(fù)  更多評(píng)論   

          # re: 介紹ExtremeTable的下一代Jmesa 2009-08-01 15:21 zeus

          Jmesa的首頁(yè)是什么?  回復(fù)  更多評(píng)論   

          主站蜘蛛池模板: 兴仁县| 来凤县| 龙井市| 巴南区| 萍乡市| 东明县| 石屏县| 平阴县| 屯门区| 鲁山县| 郎溪县| 漳平市| 临桂县| 贵溪市| 铜山县| 定襄县| 韩城市| 玉门市| 罗山县| 正蓝旗| 金秀| 美姑县| 贺州市| 塔河县| 阜康市| 湄潭县| 闸北区| 年辖:市辖区| 郑州市| 拉孜县| 龙岩市| 大足县| 神池县| 长丰县| 景德镇市| 六枝特区| 疏附县| 榆林市| 九寨沟县| 云浮市| 彝良县|