extremeTable中的疑难问题

1.使用extremetable作为前端表格输出;

2.该table内容如下:

地区代码  地区名称  行政区划

001        中国      country

002        四川      province

.......

3.想达到如下显示目标:

地区代码  地区名称   行政区划

001        中国       国家

002        四川       province

也就是:将原来的英文显示转换成汉字显示

4.目前采用的方法:

1)将行政区划维护为一个enum,名为AdministrativeLevel

2)在control层中构造一个map[key=行政区划代码, value=行政区划名称]

3)将map传到jsp中

4)用el表达式标签读取如下:

<ec:table items="regionList" var="region" scope="request" action="">

.....

<ec:column property="administrativeLevel" title="region.administrativeLevel">

${map["AdministrativeLevel.${region.administrativeLevelCode}"]}

</ec:column>

.....

</ec:table>

其中:${region.administrativeLevelCode}表示当前行的行政区划代码;

map是代码与实际名称的对应表;

所以希望${map["AdministrativeLevel.${region.administrativeLevelCode}"]}能根据每行值的不同,取出相应的名称.



结果当然是null,因为不支持嵌套el.



这种情况当如何解决呢?

标准的办法是实现Cell接口或者继承org.extremecomponents.table.cell.AbstractCell类
/ec:column
下面是例子:
[code="java"]
/**

  • 解决null对象的显示问题。
    *
    /
    public final class DisplayCell extends AbstractCell {
    /
    *

    • @see AbstractCell#getExportDisplay(TableModel, Column) */ public String getExportDisplay(TableModel model, Column column) { return column.getPropertyValueAsString(); }

    /**

    • 取得Cell Value,如果是null,则输出  */ protected String getCellValue(TableModel model, Column column) { String str = column.getValueAsString(); if (column.getValue() == null || "null".equals(str)) { return " "; } return StringUtil.stripTags(str); } }

[/code]