【问题标题】:How to modifiy the empty value of a column in displaytag?如何修改displaytag中一列的空值?
【发布时间】:2015-11-19 10:49:43
【问题描述】:

如果列的值为 null,DisplayTag 将打印一个空字符串。 这是在org.displaytag.model.Column#getValue 方法中执行此操作的源代码:

if (object == null || "null".equals(object)) //$NON-NLS-1$
{
    if (!this.header.getShowNulls())
    {
        object = TagConstants.EMPTY_STRING;
    }
}

我想知道是否有办法覆盖它并显示特定值而不是空字符串。我正在寻找的是通用/自动解决方案,否则我可以通过测试与列对应的属性是否为空并在需要时返回特定字符来手动处理...

【问题讨论】:

    标签: java jsp spring-mvc jakarta-ee displaytag


    【解决方案1】:

    您可以根据需要使用装饰器自定义任何列的值:

    例子

    http://demo.displaytag.org/displaytag-examples-1.2/example-decorator.jsp

    标签参考:

    http://www.displaytag.org/10/tagreference-displaytag-12.html

    从而创建一个类:

    public class MyCustomColumnDecorator implements DisplaytagColumnDecorator{
    
        public Object decorate(Object columnValue, PageContext pageContext, MediaTypeEnum media) {
            return value == null ? "some string" : value;
        }
    }
    

    在您的标记中为您希望使用它的任何列指定此项:

    <display:table name="someList">
      <display:column sortable="true" title="ID"/>
      <display:column property="email" autolink="true"/>
      <display:column property="description" title="Comments" decorator="com.test.MyCustomColumnDecorator"/>
    </display:table>
    

    【讨论】:

    • 实际上,这就是我现在正在做的事情......,但即使你的解决方案也不是通用的,因为我需要为我的应用程序中每个表的每一列指定装饰器,即不是真正的自动/通用的东西。我试图覆盖 DisplayTag 的 tld fileTableTagColumn,但我遇到了一些问题,因为我不得不使用反射,而且它开始变得非常混乱......
    • 好吧,我最终这样做了,因为我还没有设法找到一个自动/通用的解决方案......所以我不得不将装饰器属性添加到每一列......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多