3

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

4

3 回答 3

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" />
于 2008-11-26T03:57:31.133 回答
1

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

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

于 2008-11-25T21:59:45.770 回答
-2

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

你最好在数据到达 displaytag 标签之前处理这个问题。也许在提供数据的 servlet 或视图助手类中。

于 2008-11-25T21:00:03.677 回答