displaytag:在HTML表中压缩零

时间:2008-11-25 19:39:26

标签: java html jsp html-table displaytag

我有一个HTML表,它由displaytag标签库在JSP中生成。我想抑制表中出现的任何零,即它们应该被空白单元格替换。有没有直接的方法来实现这个目标?

3 个答案:

答案 0 :(得分:2)

我发现这可以使用ColumnDecorator的自定义实现来实现。

public class SuppressZeroDecorator implements DisplaytagColumnDecorator {

    /* (non-Javadoc)
     * @see org.displaytag.decorator.DisplaytagColumnDecorator#decorate(java.lang.Object, javax.servlet.jsp.PageContext, org.displaytag.properties.MediaTypeEnum)
     */
    public Object decorate(Object rowObject, PageContext pageContext, MediaTypeEnum mediaType) {

        if (rowObject != null && rowObject.toString().trim().equals("0")) {
            return null;
        }

        return rowObject;
    }
}

应该为JSP中的每一列声明装饰器,如下所示:

<display:column property="age" title="Age" decorator="com.example.ZeroColumnDecorator" />

答案 1 :(得分:1)

创建一个org.displaytag.decorator.TableDecorator实例,并将其放入表中。使用display:table标签的decorator属性将完全限定的装饰器类名放入表中(我相信你可以实例化一个然后放入它,但是这个类的实例化是微不足道的...确保你有一个无参数的构造函数为了正常工作)。

方法initRow(...)或startRow()是您遍历表对象的地方,将您找到的任何零设置为null(或者,如果显示空值,则为空格)。我建议使用initRow,但请确保首先使用super.initRow()来轻松访问当前行对象。我推荐这个的原因是startRow必须返回一个String(默认返回一个空字符串),我认为你不需要这样做。

答案 2 :(得分:-2)

据我所知,没有一种“直截了当”的方式来处理这个问题。唯一与数据相关的配置属性是否显示空值。

在数据到达displaytag标记之前,最好先处理它。也许在提供数据的servlet或视图助手类中。