为了设置全局属性和设置,你需要使用Preferences特性,它现在使用一个属性文件来实现。本文档将很好地介绍如何在web.xml里设置Preferences, 以及一些需要被定义的通用属性。在这里我非常乐意介绍一些关于Preferences的进一步用法。
所有标签属性表示一个可插接的接口,它可以通过给出实现的全路径来设置。这为插接实现提供了一条便利的途径。当然这存在一些为过长术语的设计和维护的考虑。 第一,对你的接口实现进行硬编码;第二,如果你需要在别的JSP中用到同一个接口实现,你需要拷贝你全路径。解决这两个问题的有效办法就是在Preferences中声明一切。
下面列出的是可以在Preferences中申明的所有接口。Tag列展示的是eXtremeTable的标签,Attribute 列展示的是相关标签的对应属性。Interface列展示的是需要被实现的Java接口。Preference Key列展示的是 Preferences里对应的健。
Tag Attribute Interface Preference Key TableTag filterRowsCallback org.extremecomponents.table.callback.FilterRowsCallback table.filterRowsCallback TableTag intercept org.extremecomponents.table.intercept.InterceptTable table.intercept 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 intercept org.extremecomponents.table.intercept.InterceptRow row.intercept 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 intercept org.extremecomponents.table.intercept.InterceptColumn column.intercept ExportTag intercept org.extremecomponents.table.intercept.InterceptExport export.intercept ExportTag view org.extremecomponents.table.view.View export.view ExportTag viewResolver org.extremecomponents.table.filter.ViewResolver export.viewResolver
提示:当在写作本指南的时候,我意识到我忘记了让标签ColumnsTag的autoGenerateColumns 属性和Preferences协同工作。这将在下一版修正。
上表展示了如何声明preference键,但是没有解释如何指定有意义的别名。如果你注意到preference键提供了一致的语法 tag.attribute,指定键的别名仅仅是在它的基础上进行扩展。它的语法为: tag.attribute.alias。
eXtremeTable提供了一个名为RowCountCell定制的cell,它的作用是显示当前的行数。我将在Preferences里使用ColumnTag cell声明来示范RowCountCell的使用。
首先通过实现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); } }
然后在Preferences (属性文件)进行声明并给出别名。eXtremeTable在一个Preferences里保存所有的配置信息,你可以通过使用本地 Preferences的来覆盖任何的这些属性。
RowCountCell默认的别名是rowCount:
column.cell.rowCount=org.extremecomponents.table.cell.RowCountCell
在ColumnTag中通过别名引用Cell:
<ec:column alias="count" cell="rowCount"></ec:column>
现在你可以通过rowCount来引用这个Cell,如果包名改变了你只需要对Preferences进行修改。