问题描述
1.使用extremetable作为前端表格输出;2.该table内容如下:地区代码 地区名称 行政区划001 中国 country002 四川 province.......3.想达到如下显示目标:地区代码 地区名称 行政区划001 中国 国家002 四川 province也就是:将原来的英文显示转换成汉字显示4.目前采用的方法:1)将行政区划维护为一个enum,名为AdministrativeLevel2)在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 cell="你的cell实现类" property=""></ec:column>下面是例子:/** * 解决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); }}