eXtremeTable--Interceptor Tutorial

Interceptor Tutorial
拦截器的学习例子
 
拦截器的特征就是被用来在运行时改变属性值的. 这使得能够改变eXtremeTable的行为, eXtremeTable是基于数据的. 如果你读过关于如何来扩展tag的属性, 那它是相同的概念和方法实现. 一般来说, 当你需要为tag增加属性的时候, 你应该使用扩展的tag属性, tag是被定义在TLD, 在JSP中可用.  当你仅仅需要去修改属性的时候, 可以使用拦截器, 这些属性都已经被定义好了.
 

Interceptor Chart

拦截器图表
 
下面罗列的tags, 包含了一个拦截器属性, 然后接口需要被实现. 列Bean显示被model所创建的bean.

Tag Interface Bean
TableTag org.extremecomponents.table.interceptor.TableInterceptor org.extremecomponents.table.bean.Table
RowTag org.extremecomponents.table.interceptor.RowInterceptor org.extremecomponents.table.bean.Row
ColumnTag org.extremecomponents.table.interceptor.ColumnInterceptor org.extremecomponents.table.bean.Column
ExportTag org.extremecomponents.table.interceptor.ExportInterceptor org.extremecomponents.table.bean.Export

 

Row Interceptor Example

行拦截器例子
 
一个完美的例子用来模拟拦截器的特征,  基于某一个标准将会使得一行高亮, 我们将会学习这个例子. 这个是比较简短的. 在这个例子中所被用到的概念也适用于其他每一个拦截器接口.
 
首先一件事我们需要做的就是实现RowInterceptor接口. 你将会注意到在这个接口中有两个方法. 他们是    addRowAttributes()  和  modifyRowAttributes(). addRowAttributes是在Rown bean被创建的时候被调用的. 在table当前页载入数据的时候,  modifyRowAttributes会被调用的.

 public class MarkerInterceptor implements RowInterceptor {
     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("");
         }
     }
 }

在配置文件中, 你需要去为row拦截器声明一个别名.


 row.interceptor.marker=org.extremesite.interceptor.MarkerInterceptor

这个RowTag将会使用拦截器属性来调用MarkerInteceptor.


 <ec:row interceptor="marker">

如果想让配置说明书和RowTag的语法可以使用生效, 那么可以参考配置文件说明书 (Preferences tutorial).

 

 

你可能感兴趣的:(jsp,extremetable)