eXtremeComponents使用总结--3(转载)

本文详细介绍了eXtremeTable组件的使用方法,包括视图、表视图、导出视图、属性配置、偏好设置、进阶技巧、消息资源绑定等核心内容。通过实例展示了如何定制视图、调整属性、使用资源文件和标签来优化eXtremeTable的显示效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Chapter 9. 视图

9.1. 引言

eXtremeTable里视图是可插接的,这意味着html很容易改变,或者一类新的导出能够被实现。 所有需要做的就是实现View接口并在TableTag或ExportTag中设置view属性。首先,让我们看一下View接口:

public interface View {
  public void beforeBody(TableModel model);
  public void body(TableModel model, Column column);
  public Object afterBody(TableModel model);
}

实现View接口的类有三次插入内容的机会。beforeBody()方法会被立刻调用; body()方法在每一行的每一列处理的时候调用;afterBody()方法是被eXtremeTable调用的 最后方法,它将返回代表视图的一个对象,通常它是一个字符串。例如:在HTML视图类中为的html 标签(markup),当然它可以是任何东西。最主要的原因是定制导出时,你应该返回一些其他的对象。

9.2. 表视图

eXtremeTable的所有标签(markup)在两个地方生成:View或Cell。 组合使用他们, 能为你提供一种可插接的表示内容的解决方案。为了使用定制的View, 只需要使用TableTag的view属性来指定实现View接口的实现类的 全路径:

<ec:table
  items="presidents"
  action="${pageContext.request.contextPath}/presidents.run"
  view="com.mycompany.view.MyCustomView"
  >
  ...
</ec:table>

9.3. 导出视图

与表视图不同,export的所有标签都在View中生成。为了使用定制的View, 只需要使用ExportTag的view属性来指定实现View接口的实现类的 全路径:

<ec:table
  items="presidents"
  action="${pageContext.request.contextPath}/presidents.run"
  >
  <ec:export
    fileName="custom.file"
    tooltip="Export Custom"
    view="com.mycompany.view.MyCustomExportView"/>
  ...
</ec:table>

Chapter 10. Preferences

10.1. 引言

为了替代硬编码eXtremeTable使用的默认属性值,我在属性文件中配置所有用到的属性。 如果你需要覆盖任何默认的设置,你可以创建自己的extremecomponents.properties文件 并设置你想改变的值。

为了设置属性文件,你应该如下例所示在/WEB-INF/web.xml文件中声明一个context-param,并 指定你的属性文件的路径:

<context-param>
  <param-name>extremecomponentsPreferencesLocation</param-name>
  <param-value>/org/extremesite/resource/extremecomponents.properties</param-value>
</context-param>

你可以认为属性文件为你提供了一个对所有的eXtremeTables声明全局设置的一个方法。 创建属性文件的最大好处就是避免在标签中复制、粘贴相同的属性。典型的extremecomponents.properties文件如下所示:

table.imagePath=/extremesite/images/*.gif
table.rowsDisplayed=12
column.parse.date=yyyy-MM-dd
column.format.date=MM/dd/yyyy
column.format.currency=$###,###,##0.00

10.2. TableTag

在属性文件定义的TableTag使用最多的两个属性是:imagePath和rowsDisplayed。如果你不在属性文件中声明 这些属性,你需要在每个eXtremeTable中添加他们。典型的表如下所示:

<ec:table
  items="presidents"
  action="${pageContext.request.contextPath}/presidents.run"
  imagePath="${pageContext.request.contextPath}/images/*.gif"
  rowsDisplayed="12"
  title="Presidents"
  >
  ...
</ec:table>

如果在属性文件声明imagePath和rowsDisplayed,则表如下所示:

<ec:table
  items="presidents"
  action="${pageContext.request.contextPath}/presidents.run"
  title="Presidents"
  >
  ...
</ec:table>

正如你所见,属性文件避免了重复编码。

10.3. ColumnTag

在属性文件定义的ColumnTag使用最多的两个属性是:parse和format。如果你不在属性文件中声明 这些属性,你需要在每个eXtremeTable中添加他们。典型的列使用日期cell如下所示:

<ec:column property="dateOfBirth" cell=”date” parse=”yyyy-MM-dd” format=”MM/dd/yyyy”/> 

如果在属性文件声明parse和format,则列如下所示:

<ec:column property="dateOfBirth" cell=”date”/> 

当然你仍然可以定义parse和format属性来覆盖全局设置,但是大多数工程对于日期使用一致的parse 和format。需要注意属性文件中parse.date和format.date的声明语法。

下例为使用货币cell的典型列:

<ec:column property="salary" cell=”currency” format=”$###,###,##0.00”/> 

如果在属性文件声明format,则列如下所示:

<ec:column property="salary" cell=”currency”/> 

另外,你可以声明一个定制的format并在列中通过使用列的basis来使用它,我把这想象为named属性。因此如果你的 extremecomponents.properties文件如下所示:

table.format.myCustomDate=yy-MM-dd

那么列可以如下使用定制的format:

<ec:column property="dateOfBirth" cell="date" format=”myCustomDate”>

10.4. Advanced Techniques

使用named属性是我定义其他不同属性默认值时经常使用的方法。你可能对我 使用cell="date"来指定日期cell、使用cell="currency"来指定货币cell或使用view="xls."来指定xls导出感到疑惑。 如果我给你展示extremetable.properties文件的一些片断,这些就将非常清晰了。 extremetable.properties是eXtremeTable声明默认设置的属性文件,你可以通过使用 extremecomponents.properties文件来覆盖它。

column.cell.date=org.extremecomponents.table.cell.DateCell
column.cell.currency=org.extremecomponents.table.cell.NumberCell
column.filterCell.droplist=org.extremecomponents.table.cell.FilterDroplistCell
table.view.xls=org.extremecomponents.table.view.XlsView

当你在列上定义cell="date"时,eXtremeTable寻找到column.cell. 属性并将你定义的cell属性值拼接上。 换句话说cell="date"关联到column.cell.date=org.extremecomponents.table.cell.DateCell这条属性。使用属性文件 真正强大的地方在于你能够在extremecomponents.properties文件中声明一个定制的cell,并在ColumnTag中通过 名称来使用它。

再使用一个实例来阐明这一点,是否记得ColumnTag章Cell节中如何调用一个名为MyCell的定制cell:

<ec:column property="firstName" cell="com.mycompany.cell.MyCell"/>

cell使用的更好方式是在属性文件中声明并通过名称使用它。首先,更新extremecomponents.properties文件:

table.imagePath=/extremesite/images/*.gif
table.rowsDisplayed=12
table.cellspacing=2
column.parse.date=yyyy-MM-dd
column.format.date=MM/dd/yyyy
column.format.currency=$###,###,##0.00
column.cell.myCell=com.mycompany.cell.MyCell

现在可以通过名称调用MyCell:

<ec:column property="firstName" cell="myCell"/>

正如你所见的这能帮助保持代码清洁,并且这些都在一个地方定义。如果你的定制cell声明 需要改变你只需要修改属性文件。

Chapter 11. Messages

11.1. 资源绑定

为了设置资源绑定,你应该如下例所示在/WEB-INF/web.xml文件中声明一个context-param,并 指定你的资源文件的路径:

<context-param>
  <param-name>extremecomponentsMessagesLocation</param-name>
  <param-value>org/extremesite/resource/extremecomponentsResourceBundle</param-value>
</context-param>

本示例中资源文件为extremecomponentsResourceBundle,它可以为任何名或者使用已经存在的资源文件。

如果你不指定locale,则它将根据你的servlet request来决定使用哪个资源文件。 在eXtremeTable中可以通过使用TableTag的locale属性来设置它。

<ec:table
  items="presidents"
  action="${pageContext.request.contextPath}/public/demo/locale.jsp"
  title="table.title.president"
  locale="de_DE"
  >
  ...
</ec:table>

在这里eXtremeTable将寻找德文资源文件。

11.2. 全局资源

eXtremeTable使用一些全局的keys来与用户交互,包括:状态栏的文本信息,Rows Displayed droplist和不同的tooltips。如果你足够幸运,eXtremeTable已经提供了相应的语言支持 的话,那么你什么也不用担心。否则的话,你需要申明下列keys:

statusbar.resultsFound={0} results found, displaying {1} to {2}
statusbar.noResultsFound=There were no results found.

toolbar.firstPageTooltip=First Page
toolbar.lastPageTooltip=Last Page
toolbar.prevPageTooltip=Previous Page
toolbar.nextPageTooltip=Next Page
toolbar.filterTooltip=Filter
toolbar.clearTooltip=Clear

toolbar.clearText=Clear
toolbar.firstPageText=First
toolbar.lastPageText=Last
toolbar.nextPageText=Next
toolbar.prevPageText=Prev
toolbar.filterText=Filter

column.headercell.sortTooltip=Sort By

column.calc.total=Total
column.calc.average=Average

现在仅支持英语和德语。如果你使用其他语言的话,并能提供相应的翻译的话我将不胜感激。你可以通过 extremecomponents@gmail.com发送给我。

译者注:我已经提供了中文和日文的资源文件。

11.3. TableTag

TableTag属性中能够使用locale方式指定的是:imagePath和title。

在eXtremeTable中,imagePath属性有一个特定的key:table.imagePath。你可以在你的资源文件中 设置这个key为特定语言的目录结构。例如:德文图片可能放在de文件夹下,那么你可以在相应的资源文件中 进行如下设置:

table.imagePath=/extremesite/images/table/de/*.gif

title有一点不同,如果你指定的title属性值包含dot (.)并且你定义了一个资源文件,那么 eXtremeTable将寻找匹配的key。例如,如果你像下例一样在表中指定属性title="table.title.president":

<ec:table
  items="presidents"
  action="${pageContext.request.contextPath}/public/demo/locale.jsp"
  title="table.title.president"
  >
  ...
</ec:table>

那么eXtremeTable将在属性文件中寻找匹配的key:

table.title.president=US Präsidenten

11.4. ColumnTag

ColumnTag属性中能够使用locale方式指定的是:format和title。

在eXtremeTable中,format属性有一个特定的key:table.fomat.type。参考属性文件的讨论 来了解更多的细节,他们具有同样的概念。日期和货币的format类型定义可能如下所示:

column.format.date=MM/dd/yyyy
column.format.currency=$###,###,##0.00

title有一点不同,如果你指定的title属性值包含dot (.)并且你定义了一个资源文件,那么 eXtremeTable将寻找匹配的key。例如,如果你像下例一样在列中指定属性title="table.column.nickName":

<ec:table
  items="presidents"
  action="${pageContext.request.contextPath}/public/demo/locale.jsp"
  title="table.title.president"
  >
  <ec:row>
    <ec:column property="nickName" title="table.column.nickName" />
  </ec:row>
</ec:table>

那么eXtremeTable将在属性文件中寻找匹配的key:

table.column.nickName=Spitzname
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值