Displaytag: убрать нули в HTML-таблице

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

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
3
0
2 017
3

Ответы 3

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

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

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

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

Метод initRow (), который вы предложили переопределить, объявлен окончательным.

Dónal 26.11.2008 06:54

Это? Я только посмотрел на TableDecorator за секунду до публикации этого сообщения. Однако, если вы можете переопределить startRow (), вы можете делать все в одном месте с помощью одного экземпляра декоратора, а не создавать или настраивать несколько декораторов столбцов.

MetroidFan2002 26.11.2008 07:31

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

Другие вопросы по теме