eXtremeTable--PreferencesTutorial

PreferencesTutorial  
关于配置的学习例子
 

为了全局性地设置属性值, 你将会需要用到配置的特性. 当前是用一个properties文件来实现的. 文档确实是个好工具, 用来描述如何在web.xml文件中建立配置相关项(Preferences), 以及去定义那些通常的属性. 在这里我想要讲的是, 关于配置特性的一些高级用法.

 
tag特性是一个可插拔的接口, 所有的tag特性都能够通过class类文件的完全路径来被声明, 这些class类文件是用来实现这接口. 这对于可插拔性的实现方式提供了一个非常方便的方式. 然而, 对于这个方式长远来来说确实是有一些设计和维护的考虑. 首先就是对于一个详细的代码基础有你自己的实现. 第二个就是如果你想要在另外一个eXtremeTable使用那个相同的实现, 你必须在另外一个jsp中拷贝和粘帖其完整的路径. 要解决这两个问题的方式就是在配置文件中声明一切事务.
 

Preferences Chart

配置文件的图表
 
下面罗列的所有与接口有关的特性, 这些特性都被声明在配置文件中. 列Tag显示了可应用的eXtremeTable标签. 列Attribute显示的是与tag特性的相关性. 列Interface显示的是需要实现的Java接口, 列Preference Key显示的是在配置文件中使用的key.

Tag Attribute Interface Preference Key
TableTag filterRowsCallback org.extremecomponents.table.callback.FilterRowsCallback table.filterRowsCallback
TableTag interceptor org.extremecomponents.table.interceptor.TableInterceptor table.interceptor
TableTag retrieveRowsCallback org.extremecomponents.table.callback.RetrieveRowsCallback table.retrieveRowsCallback
TableTag sortRowsCallback org.extremecomponents.table.callback.SortRowsCallback table.sortRowsCallback
TableTag state org.extremecomponents.table.state.State table.state
TableTag view org.extremecomponents.table.view.View table.view
RowTag interceptor org.extremecomponents.table.interceptor.RowInterceptor row.interceptor
ColumnTag calc org.extremecomponents.table.calc.Calc column.calc
ColumnTag cell org.extremecomponents.table.cell.Cell column.cell
ColumnTag filterCell org.extremecomponents.table.cell.Cell column.filterCell
ColumnTag headerCell org.extremecomponents.table.cell.Cell column.headerCell
ColumnTag interceptor org.extremecomponents.table.interceptor.ColumnInterceptor column.interceptor
ExportTag interceptor org.extremecomponents.table.interceptor.ExportInterceptor export.interceptor
ExportTag view org.extremecomponents.table.view.View export.view
ExportTag viewResolver org.extremecomponents.table.filter.ViewResolver export.viewResolver
ColumnsTag autoGenerateColumns org.extremecomponents.table.core.AutoGenerateColumns  

 

Assign Preference Alias

赋值配置项的别名
 
上面的图表显示了对于配置key的声明相关事务, 但现在要知道如何去给它一个有意义的别名来使用它. 如果你注意到配置key有一个通常的语法, 就是 tag.attribute. 为了给key一个别名,  只要在原来的命名后面增加一个名字. 语法就是 tag.attribute.alias.
 
eXtremeTable中的一个自定义的单元格叫做RowCountCell, 用来显示当前行数. 我将会示例这个RowCountCell, 在配置文件中用ColumnTag单元格属性声明这个例子.
 
首先来搞定这个自定义的单元格, 通过实现Cell接口或者继承AbstractCell.

 public class RowCountCell extends AbstractCell {
     protected String getCellValue(TableModel model, Column column) {
         int rowcount = ((model.getLimit().getPage() - 1)
                 * model.getLimit().getCurrentRowsDisplayed())
                 + model.getRowHandler().getRow().getRowCount();
         return String.valueOf(rowcount);
     }
 }
然后在配置文件 (properties file) 中声明配置key, 给它一个别名. "eXtremeTable在一个默认的配置文件中可以设置它的所有配置项. 你同样可以重写这些特性用你的本地配置项."
 
对于RowCountCell默认的别名是rowCount, 就像下面这样:

 column.cell.rowCount=org.extremecomponents.table.cell.RowCountCell
 
为了在ColumnTag中使用RowCountCell, 只要引用Cell的别名就可以了:
<ec:column alias="count" cell="rowCount"/>

这就关于使用它的全部过程. 现在你可以把单元格关联为rowCount. 如果包(package)改变了, 那么你只需更新配置项就可以了, 它自己就可以随之改变了对于每一个自定义的row count cell.

 

"注意: 在这个例子中, 我使用了ColumnTag的别名特性. 当你有两列都使用同一个属性的时候, 就可以使用这个别名特性了.  当列没有直接关联到一个列bean属性的时候, 它同样被使用, 这个例子就是这种情况. "

 

original text:

https://code.google.com/p/extremetable/wiki/PreferencesTutorial

 

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