幸せのちから

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

          攔截器使用指南

          攔截器使用指南

          攔截器使用指南


          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 閱讀(651) 評論(0)  編輯  收藏 所屬分類: extremeComponents

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

          導航

          隨筆分類(125)

          文章分類(5)

          日本語

          搜索

          積分與排名

          最新隨筆

          最新評論

          主站蜘蛛池模板: 政和县| 蒙城县| 井冈山市| 东乡| 普格县| 卢氏县| 东乌珠穆沁旗| 卓尼县| 南平市| 新蔡县| 华坪县| 布拖县| 桃园市| 抚远县| 高碑店市| 永吉县| 庄浪县| 嵩明县| 汝阳县| 灌南县| 阳高县| 麟游县| 洞头县| 安平县| 皋兰县| 新余市| 新闻| 三亚市| 东宁县| 榆林市| 昌乐县| 屯门区| 五河县| 府谷县| 克什克腾旗| 白银市| 沈阳市| 婺源县| 新郑市| 夏津县| 常德市|