eXtremeTable--PreferencesTutorial

PreferencesTutorial  
关于配置的学习例子
 

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

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

Preferences Chart

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

TagAttributeInterfacePreference Key
TableTagfilterRowsCallbackorg.extremecomponents.table.callback.FilterRowsCallbacktable.filterRowsCallback
TableTaginterceptororg.extremecomponents.table.interceptor.TableInterceptortable.interceptor
TableTagretrieveRowsCallbackorg.extremecomponents.table.callback.RetrieveRowsCallbacktable.retrieveRowsCallback
TableTagsortRowsCallbackorg.extremecomponents.table.callback.SortRowsCallbacktable.sortRowsCallback
TableTagstateorg.extremecomponents.table.state.Statetable.state
TableTagvieworg.extremecomponents.table.view.Viewtable.view
RowTaginterceptororg.extremecomponents.table.interceptor.RowInterceptorrow.interceptor
ColumnTagcalcorg.extremecomponents.table.calc.Calccolumn.calc
ColumnTagcellorg.extremecomponents.table.cell.Cellcolumn.cell
ColumnTagfilterCellorg.extremecomponents.table.cell.Cellcolumn.filterCell
ColumnTagheaderCellorg.extremecomponents.table.cell.Cellcolumn.headerCell
ColumnTaginterceptororg.extremecomponents.table.interceptor.ColumnInterceptorcolumn.interceptor
ExportTaginterceptororg.extremecomponents.table.interceptor.ExportInterceptorexport.interceptor
ExportTagvieworg.extremecomponents.table.view.Viewexport.view
ExportTagviewResolverorg.extremecomponents.table.filter.ViewResolverexport.viewResolver
ColumnsTagautoGenerateColumnsorg.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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值