幸せのちから

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

          攔截器使用指南

          攔截器使用指南

          攔截器使用指南


          1. 引言

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

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

          1.1. 攔截器列表

          下面列出了具有攔截特性的標簽和他們需要被實現的接口,Bean欄顯示了被模型創建的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. 行攔截器示例

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

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

          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里你應該定義這個行攔截器的別名。

          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

          導航

          隨筆分類(125)

          文章分類(5)

          日本語

          搜索

          積分與排名

          最新隨筆

          最新評論

          主站蜘蛛池模板: 深泽县| 抚远县| 延寿县| 青岛市| 海盐县| 仁化县| 贵阳市| 冀州市| 桐城市| 辽阳市| 南昌县| 东乌珠穆沁旗| 尉犁县| 隆安县| 苏尼特右旗| 峨眉山市| 始兴县| 福建省| 贵州省| 肇州县| 太白县| 江都市| 石嘴山市| 阳新县| 棋牌| 满洲里市| 天等县| 正宁县| 苗栗县| 建昌县| 磐安县| 淅川县| 宁南县| 孝义市| 方正县| 原平市| 科尔| 柞水县| 尼木县| 新丰县| 克山县|