displaytag: подавить нули в таблице HTML - PullRequest
2 голосов
/ 25 ноября 2008

У меня есть таблица HTML, сгенерированная в JSP библиотекой тегов displaytag. Я хотел бы подавить любые нули, которые появляются в таблице, то есть они должны быть заменены пустой ячейкой. Есть ли простой способ добиться этого?

Ответы [ 3 ]

2 голосов
/ 26 ноября 2008

Я обнаружил, что этого можно добиться с помощью пользовательской реализации 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 голос
/ 26 ноября 2008

Создайте экземпляр org.displaytag.decorator.TableDecorator и поместите его в таблицу. Используйте атрибут декоратора тега display: table, чтобы поместить полностью определенное имя класса декоратора в таблицу (я думаю, что вы можете создать его экземпляр, а затем поместить его в него, но создание этого класса тривиально ... убедитесь, что у вас есть конструктор без аргументов чтобы это работало правильно).

Методы initRow (...) или startRow () - это то место, где вы будете проходить через свой табличный объект, устанавливая любые найденные нули на ноль (или, если отображаются нули, пустое пространство). Я рекомендую initRow, но сначала убедитесь, что вы используете super.initRow (), чтобы легко получить доступ к текущему объекту строки. Причина, по которой я рекомендую это, заключается в том, что startRow должен возвращать строку (по умолчанию возвращает пустую строку), что я не думаю, что вам нужно это делать.

0 голосов
/ 26 ноября 2008

Насколько мне известно, нет "прямого" способа справиться с этим. Единственное связанное с данными свойство конфигурации - отображать ли пустые значения или нет.

Вам лучше справиться с этим, прежде чем данные попадут в тег displaytag. Возможно, в сервлете, который предоставляет данные или вспомогательный класс вида.

...