幸せのちから

          平凡的世界
          看似平常實崎嶇
          成如容易卻艱辛

          eXtremeComponents M5 Release升級說明(A8)

          ??? ???A8是eXtremeComponents正式Relese前的最后一個開發(fā)者版,現(xiàn)在eXtremeComponents的code工作已經(jīng)全部結(jié)束,在Release之前的工作是完善eXtremeComponents的文檔、指南和javadocs。所以請廣大網(wǎng)友協(xié)助測試一下我前篇“eXtremeComponents導出時的中文文件名問題”中提到的中文文件名的問題,以便我能盡快提交,使得能夠隨著正式版一起Release。
          ???????

          開發(fā)者版

          開發(fā)快照版

          extremecomponents-1.0.1-M5-A8(下載) 是正式版發(fā)行前的最后開發(fā)快照版。這個build版所使用的代碼將被下一個release版沿用。

          1.0.1-M5-A8

          我決定發(fā)布一個新的里程碑(milestone)版是因為我對視圖(view)的代碼做了一些調(diào)整,現(xiàn)在eXtremeTable將能夠支持AJAX(而不是局部build)。 在確認release候選版前,這些增加的大的特性能夠完美地工作。

          下面列出的是eXtremeTable下一個里程碑(milestone)版特性和改進,我希望從上一個里程碑版升級到現(xiàn)在這版沒有任何問 題(breakage)。 然而,在完成M4版視圖實現(xiàn)后,我決定我必須做最后的更改...將靜態(tài)builders變?yōu)榫唧w的類。這將是唯一可能出現(xiàn)問題(breakage)并且 將只影響到定制視圖(定制cells也一樣,但是更多的是較平和的deprecated)。盡管那樣,這些更改將很容易實現(xiàn)。

          Html Builder類具體化

          所有的視圖builder類具體化,需要被實例化,這些只對開發(fā)者需要創(chuàng)建定制試圖或cells有影響。 這是因為需要使得視圖代碼能夠像他們需要的那樣具有彈性。builder classes是靜態(tài)的能夠很好地工作,但是 將來沒有機會來做一些有意義的事,并且創(chuàng)建定制試圖更加麻煩。然而,現(xiàn)在這些方法和原來的一樣,而僅僅是需要對它進行實例化。

          為了使這種轉(zhuǎn)變更容易CellBuilder仍然是靜態(tài)的,但是現(xiàn)在為deprecated。新的(非靜態(tài))builder稱為ColumnBuilder,通過這個名稱我們能更確切地知道什么被構(gòu)建了。

              public String getHtmlDisplay(TableModel model, Column column) {
          ColumnBuilder columnBuilder = new ColumnBuilder(column);
          columnBuilder.tdStart();
          columnBuilder.tdBody(getCellValue(model, column));
          columnBuilder.tdEnd();
          return columnBuilder.toString();
          }

          另一個例子,使用ColumnBuilder定制cells如下:

           public String getHtmlDisplay(TableModel model, Column column) {
          InputBuilder inputBuilder = new InputBuilder(column);
          inputBuilder.tdStart();

          try {
          Object bean = model.getCurrentRowBean();
          Integer id = new Integer(BeanUtils.getProperty(bean, "id"));
          inputBuilder.tdBody(id);

          } catch (Exception e) {}

          inputBuilder.tdEnd();

          return inputBuilder.toString();
          }

          private static class InputBuilder extends ColumnBuilder {
          public InputBuilder(Column column) {
          super(column);
          }

          public void tdBody(Integer id) {
          getHtmlBuilder().input("radio").name("location.id").id("location.id").value(id.toString()).onclick("populateLocationFields(this.value)");
          getHtmlBuilder().xclose();
          }
          }
          }

          這樣更簡潔,只需要擴展你關心的builder,并構(gòu)建你定制的實現(xiàn)。

          另外toolbar被完全重構(gòu),但是這個實現(xiàn)被隱藏在ToolbarBuilder類的背后,所以不會有影響。

          最后,我探索性地增加了toolbar特性,這樣可以在preferences配置表關聯(lián)到不同的toolbars。 這個特性能夠用來動態(tài)構(gòu)造toolbar。這將使開發(fā)者很簡單地通過preferences來定義一個定制的toolbar。 例如,一個toolbar當使用Limit定制不包含最后一頁按鈕,或者另一個toolbar不包含rows displayed... 如果你要定制的就是這些東西而不需要別的新的特性,你最好等待一兩個星期直到我實現(xiàn)完成。

          新的表的showTitle屬性

          TableTag新的showTitle屬性用來確認是否現(xiàn)實title,這是一個boolean值默認為true。

          Limit現(xiàn)在能使用State特性

          Limit特性為了使用State特性,你需要使用TableLimitFactory的帶有state的構(gòu)造函數(shù),當使用state 特性時,你應該提供唯一的tableId(本例為presidents),帶有state的構(gòu)造函數(shù)同時也需要這個tableId。

              Context context = new HttpServletRequestContext(request);
          LimitFactory limitFactory = new TableLimitFactory(context, presidents, TableConstants.STATE_PERSIST, null);
          Limit limit = new TableLimit(limitFactory);

          新的列的filterOptions屬性/FilterOption接口

          TableTag新的filterOptions屬性,能夠接受一個filter options的集合,這個集合中的每個bean都實現(xiàn)FilterOption的 接口。被用來和filterCell=droplist結(jié)合,當使用Limit時使用定制droplist時非常有用。

          導出EXCLE文件時的本地語言的支持

          默認的XlsView使用UTF-16編碼,這樣能夠支持對于雙字節(jié)語言導出。如果要使用unicode,你可以設置 ExportTag的新的encoding屬性,這個屬性接受的值為:UTF和UNICODE。

          刪除Compact視圖的title的style

          當使用compact視圖是我硬編碼了表的title,這是一個bug。只需要通過CSS的titleRow屬性style(或移走)title。

          TableModel現(xiàn)在變?yōu)榻涌?

          TableModel現(xiàn)在變?yōu)榻涌冢@只對TableAssembler產(chǎn)生影響。然而,正如下面提到的,使用Java代碼來組裝一個表將更容易。

          TableAssembler整合到TableModel

          當使用Java代碼來組裝一個表將更容易:

              TableModel model = new TableModelImpl(context);

          Table table = new Table(model);
          table.setItems(presidents);
          table.setAction("assembler.run");
          table.setTitle("Presidents");
          table.setShowTooltips(Boolean.FALSE);
          model.addTable(table);

          Row row = new Row(model);
          row.setHighlightRow(Boolean.FALSE);
          model.addRow(row);

          Column columnName = new Column(model);
          columnName.setProperty("fullName");
          columnName.setIntercept((AssemblerIntercept.class).getName());
          model.addColumn(columnName);

          Column columnNickName = new Column(model);
          columnNickName.setProperty("nickName");
          model.addColumn(columnNickName);

          Object view = model.assemble();

          重命名FilterSet.getValue()方法

          FilterSet.getValue()方法被Deprecated,重命名為FilterSet.getFilterValue()。

          刪除TableTag的onsubmit

          onsubmit被刪除,因為javascript被表的所有actions使用。

          總計導出

          PDF和XLS現(xiàn)在包含總計導出,你只需要和平常一樣設置Calc特性。

          導出錯誤-Response頭修改

          過濾器的response頭應該能更好地適應不同環(huán)境,在response頭后添加:

           response.setHeader("Cache-Control", "must-revalidate, post-check=0, pre-check=0");

          列標簽autoGenerateColumns的Preferences

          autoGenerateColumns屬性現(xiàn)在可以在Preferences文件中配置,可以使用別名來避免全路徑引用。

          自動轉(zhuǎn)換參數(shù)

          Registry能夠接受null、String、List或者Array作為參數(shù),Registry將把這些轉(zhuǎn)換成String[]。

          表的bufferView屬性

          表的bufferView屬性,默認為true將使用視圖的默認buffer。如果不需要使用buffer可以設置為false。

          eXtremeTable的AJAX特性

          當使用eXtremeTable API來通過JAVA代碼來創(chuàng)建表時,現(xiàn)在可以結(jié)合AJAX技術(shù)來生成視圖。這意味著 當navigate(比如:翻頁)時不需要刷新web頁,這令人非常興奮,關于這個特性的更多的文檔將會出來。開發(fā) 者能夠更好地測試并使用這個特性,這個特性的真正hook是表的onInvokeAction屬性,它使得javascript方法 能夠被invoked。AJAX整合一個最強大的地方是它不需要整合。下一步是使eXtremeTable有一個清晰并且易于使用的API, 這意味著你可以使用你感興趣的AJAX技術(shù)因為eXtremeTable沒有整合一個特定的技術(shù)。現(xiàn)在你可以通過CVS得到eXtremeSite代碼, 它展示了一個使用AJAX的實例,它現(xiàn)在使用HSQL所以只需要下載并直接運行。請暫時不要向我詢問更多的文檔,我現(xiàn)在正在整理 并將盡可能快的發(fā)布出來。

          表的items可以使用Map

          表的Items可以使用Map(values),因此可以使用不使用Collection而使用一些key來快速構(gòu)造。 這個特性正是一個eXtremeComponents使用者需要的。我想這將是一個有趣的特性所以決定在下一個release中發(fā)布!

          可以定義超過一個顯示的行數(shù)(rows displayed))

          現(xiàn)在可以定義超過一個顯示的行數(shù)(rows displayed)。這使得在eXtremeTable頂部和底部定義相同的工具條成為可能。

          Parameter參數(shù)的更多變化

          Parameter特性能更好地支持Arrays、Lists、String和其他一些具有toString()的java對象,具有toString()函數(shù)能夠轉(zhuǎn)換成一個String數(shù)組(array),例如:Number。

          修正Export viewResolver屬性沒有被參照

          修正Export viewResolver屬性沒有被真正使用的bug。這使得定制導出時不需要設置view和viewResolver為相同的命名,而可以給出ViewResolver的全路徑或者在配置中配置它的別名。

          修正在同一個form中使用兩個eXtremeTables時導出的問題

          修正在同一個form中使用兩個eXtremeTables時導出的問題,現(xiàn)在他們能夠互不干擾分別導出。我只是重新組織表實例 (instance)參數(shù)(現(xiàn)在命名ec_eti為導出表的id),這個參數(shù)需要被同一個form中的不同表共享,每次request時候被重新設置 (reset)。

          如果form還包含其他的按鈕(buttons)被條用,導出完畢后你需要調(diào)用resetExportParameters(form, action),它包含在extremecomponents.js文件中。第一個參數(shù)是當前的form,第二個參數(shù)是form的action。這個是因 為導出使用javaScript進行調(diào)用,沒有別的辦法重新自動reset它。 resetExportParameters做的就是將導出表的id置為空(null),并且將form action設置為原來的值。這很不幸,但是我想不出別的處理方法。

          Note: 這個修正也關系到State特性。當使用State設置為persist時,導出也會出現(xiàn)問題。

          table.imagePath配置(preference)添加上下文路徑(contextPath )

          如果table.imagePath的上下文路徑(context path)沒有在配置文件(Preferences)中指定,那么將給它自動指定一個。然而,如果路徑以表示絕對路徑“/”開始,將只給它提供一個上下文 (context)而上下文(contextPath)并沒有插入。

          使用javascript設置form的method屬性

          當翻頁、過濾、排序時將使用javascript來設置form的method屬性。以前只是設置了form的action屬性,為了完整性現(xiàn)在也設置了form的method屬性。

          Bullet Proof Limit feature

          如果傳入不正確的數(shù)據(jù)到LimitCallback時,Limit只記錄(log)并顯示一個警告(warning)。

          Intercept被重命名為Interceptor

          intercept特性被重命名為interceptor。因此我們現(xiàn)在的interceptors有:TableInterceptor、 RowInterceptor、ExportInterceptor和ColumnInterceptor。他們現(xiàn)在在interceptor包中。遍更 的原因是intercept不如interceptor能給大家提供一種表明他們作用更好的直覺。我不向提供一種我不喜歡的命名。然而,這些方法名都一樣 所以能夠?qū)⑺麄兗械揭粋€正確的包中。

          posted on 2006-04-09 17:01 Lucky 閱讀(3118) 評論(15)  編輯  收藏 所屬分類: extremeComponents

          評論

          # re: eXtremeComponents M5 Release升級說明(A8) 2006-04-10 12:49 江南白衣

          hello, 內(nèi)嵌對象的排序搞好沒有?
          比如book.category.name 列。

          因為js訪問 form.category.name出錯(其實form.getElementByID("category.name")就沒事了),我一般設了alias="categoryName"
          但最近的版本把alias而不是category.name作為排序的參數(shù)傳給controller了。  回復  更多評論   

          # re: eXtremeComponents M5 Release升級說明(A8) 2006-04-10 13:19 xplucky

          A8到A4的升級其實本質(zhì)上是內(nèi)部的調(diào)整(refactor),你說到的內(nèi)嵌對象的排序現(xiàn)在應該是還沒有完成。  回復  更多評論   

          # re: eXtremeComponents M5 Release升級說明(A8) 2006-04-10 13:21 thinkbase

          支持 eXtremeComponents,, 我想Java開發(fā)就是需要這樣功能強大的組件  回復  更多評論   

          # re: eXtremeComponents M5 Release升級說明(A8) 2006-04-10 13:32 xplucky

          @thinkbase
          是啊,基礎打得非常好,擴展性很強,我現(xiàn)在有個想法: 我們的國內(nèi)程序員能不能組織一下豐富一下它的外圍,定制一些我們習慣的view、cell、filter...  回復  更多評論   

          # re: eXtremeComponents M5 Release升級說明(A8) 2006-04-10 21:36 Robin's Java World

          @xplucky
          這個想法不錯,支持一下!
          有什么行動的話,可以參與一下。  回復  更多評論   

          # re: eXtremeComponents M5 Release升級說明(A8) 2006-04-11 10:32 xplucky

          5.1前我會比較忙,我想實時跟蹤翻譯Ex的文檔,還有一個project也打算在5.1前Release0.1版: www.openfans.net 我的打算是在5.1后,等Ex Release后,咱們基于最新的Release來完成外圍的一些定制工作。  回復  更多評論   

          # re: eXtremeComponents M5 Release升級說明(A8) 2006-04-11 15:25 江南白衣

          無望之災阿,以前一直正常的,用column_name排序的,忽然間就把alias用來傳給controller排序了。

          搞到現(xiàn)在所有category.name式的列都不能排序了,挺大的一個bug,對實際項目挺影響的,最好趕快改。

          BTW.能拿你的MSN or QQ么:) or lucky == pesome?  回復  更多評論   

          # re: eXtremeComponents M5 Release升級說明(A8) 2006-04-11 15:32 xplucky

          我的 MSN: zlh326@msn.com   回復  更多評論   

          # re: eXtremeComponents M5 Release升級說明(A8) 2006-04-26 02:25 rombus

          下了最新的m5版本把原來m4的換了,可以解決導處execl中文問題了,可是在過濾里搜索中文還是出現(xiàn)亂碼,我已經(jīng)加了post提交了,我用的是tomcat5.5  回復  更多評論   

          # re: eXtremeComponents M5 Release升級說明(A8) 2006-04-26 10:42 xplucky

          我的經(jīng)驗是你得加編碼過濾器,請看:
          http://www.aygfsteel.com/lucky/archive/2006/03/31/38474.html  回復  更多評論   

          # re: eXtremeComponents M5 Release升級說明(A8) 2006-04-26 11:24 rombus

          是 按照2. 傳入中文參數(shù)亂碼講的嗎?我做了還是一樣,過濾里敲中文 搜索就變亂碼了,哪里還不對呢?正式版里會解決中文問題嗎?
            回復  更多評論   

          # re: eXtremeComponents M5 Release升級說明(A8) 2006-04-26 16:55 xplucky

          到現(xiàn)在為止加了過濾器的好像這個問題都解決了,你給我mail吧。  回復  更多評論   

          # re: eXtremeComponents M5 Release升級說明(A8) 2006-04-29 23:43 rombus

          @xplucky
          rombus007@hotmail.com
            回復  更多評論   

          # re: eXtremeComponents M5 Release升級說明(A8)[未登錄] 2007-10-19 15:59 Joe

          請問如何在頂部和底部都添加翻頁的標簽  回復  更多評論   

          # re: eXtremeComponents M5 Release升級說明(A8) 2007-11-25 22:18 愛不留


          你好:
          我在同一頁面用兩個extremetable, 點下一頁或者導出EXCEL時都會出錯JS錯誤:
          行:1 字元:1 錯誤:'document.forms.ec.ec_eti'是null或不是對象

          請問怎么回事?
          謝謝啊.
          我的QQ: 334545190, 急盼您的回復!  回復  更多評論   

          <2006年4月>
          2627282930311
          2345678
          9101112131415
          16171819202122
          23242526272829
          30123456

          導航

          隨筆分類(125)

          文章分類(5)

          日本語

          搜索

          積分與排名

          最新隨筆

          最新評論

          主站蜘蛛池模板: 财经| 饶平县| 广安市| 分宜县| 吉隆县| 锡林郭勒盟| 莎车县| 同心县| 安阳县| 陇南市| 宿州市| 吴旗县| 江都市| 甘洛县| 琼中| 南皮县| 漳平市| 稻城县| 拉萨市| 高邑县| 莱西市| 石城县| 盐城市| 郓城县| 松溪县| 抚远县| 宜兴市| 无锡市| 娄烦县| 修文县| 涟源市| 武汉市| 宁化县| 本溪市| 工布江达县| 云浮市| 巴林左旗| 离岛区| 滨州市| 黎平县| 紫云|