幸せのちから

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

          攔截器使用指南

          攔截器使用指南

          攔截器使用指南


          1. 引言

          攔截特性被用在運行時需要修改屬性值的時候,它使得改變基于數(shù)據(jù)的eXtremeTable的行為成為可能。在閱讀擴展標簽屬性時,你會發(fā)現(xiàn)它和擴展標簽屬性具有同樣的概念和方法標識。 區(qū)分使用他們的首要準則是:如果需要向TLD里已經(jīng)定義的并且能夠在JSP中訪問的標簽添加新的屬性時,應(yīng)該使用擴展標簽屬性;如果僅僅是需要修改已經(jīng)定義好的屬性的值的時候,應(yīng)該使用攔截器。

          你可能需要了解更多的eXtremeTable如何運作的技術(shù)背景才能完全理解這種特性。 eXtremeTable首先做的就是遍歷所有標簽并創(chuàng)建對應(yīng)的模型beans (pojos)。beans是具有和標簽一樣屬性,但是使用真實類型來替換僅僅使用字符串類型的對象。beans是被模型使用并且是你需要使用攔截特性修改的對象。 所有的攔截器接口都定義了一個add方法, add方法被用來處理模型bean第一次創(chuàng)建時的屬性。行和列的攔截器還有一個modify 方法。modify方法可以在當行和類進行處理是對屬性值進行操作。

          1.1. 攔截器列表

          下面列出了具有攔截特性的標簽和他們需要被實現(xiàn)的接口,Bean欄顯示了被模型創(chuàng)建的Bean。

          標簽接口Bean
          TableTagorg.extremecomponents.table.intercept.InterceptTableorg.extremecomponents.table.bean.Table
          RowTagorg.extremecomponents.table.intercept.InterceptRoworg.extremecomponents.table.bean.Row
          ColumnTagorg.extremecomponents.table.intercept.InterceptColumnorg.extremecomponents.table.bean.Column
          ExportTagorg.extremecomponents.table.intercept.InterceptExportorg.extremecomponents.table.bean.Export

          1.2. 行攔截器示例

          示范攔截特性的完美示例就是根據(jù)一定的標準來對行進行高亮顯示,這也是我們將要完成的示例。它很短也很簡單,不過它實現(xiàn)的概念同樣適用于每一個攔截器接口。

          我們需要做的第一件事就是實現(xiàn)InterceptRow接口。你會注意到這個接口有兩個方法:addRowAttributes() 和modifyRowAttributes()。addRowAttributes方法在行bean創(chuàng)建的時候被調(diào)用, modifyRowAttributes方法在表處理當前頁面行的時候被調(diào)用。

          public class MarkerIntercept implements InterceptRow {
          public void addRowAttributes(TableModel tableModel, Row row) {
          }

          public void modifyRowAttributes(TableModel model, Row row) {
          President president = (President) model.getCurrentRowBean();
          String career = president.getCareer();
          if (StringUtils.contains(career, "Soldier")) {
          row.setStyle("background-color:#fdffc0;");
          } else {
          row.setStyle("");
          }
          }
          }

          在Preferences里你應(yīng)該定義這個行攔截器的別名。

          row.intercept.marker=org.extremesite.intercept.MarkerIntercept

          這樣就可以在行標簽中使用攔截器MarkerIntercept了。

          <ec:row intercept="marker">

          如果不清楚Preferences和TableTag定義語法請參考Preferences指南。

          posted on 2006-02-19 11:12 Lucky 閱讀(648) 評論(0)  編輯  收藏 所屬分類: extremeComponents

          <2006年2月>
          2930311234
          567891011
          12131415161718
          19202122232425
          2627281234
          567891011

          導(dǎo)航

          隨筆分類(125)

          文章分類(5)

          日本語

          搜索

          積分與排名

          最新隨筆

          最新評論

          主站蜘蛛池模板: 龙口市| 盐池县| 于田县| 清水县| 汽车| 浮梁县| 北辰区| 罗江县| 宜昌市| 永和县| 浠水县| 嫩江县| 桂东县| 马龙县| 荣成市| 容城县| 深水埗区| 铜陵市| 镇安县| 农安县| 竹北市| 枣阳市| 柳河县| 昌吉市| 泰来县| 什邡市| 陇南市| 明光市| 河东区| 通山县| 民和| 安宁市| 山阴县| 新乡县| 安溪县| 成都市| 阿巴嘎旗| 岳西县| 漠河县| 柞水县| 阳西县|