Скрывает ли Displaytag тип мультимедиа на странице или в атрибуте запроса?

Когда вы включаете «экспорт» из Displaytag, код тега дает вам ссылки со специальными магическими параметрами, которые тег распознает как индикаторы того, что содержимое таблицы должно быть экспортировано (в формате CSV, Excel и т. д.). Ну, я заинтересован в определении типа носителя, чтобы (например) я мог исключить столбцы, которые не имеют смысла в экспорте (например, встроенные кнопки действий или флажки для выбора строки).

Я полагаю, что мог бы написать декоратор таблицы и использовать его для привязки типа носителя к запросу, но было бы неплохо избежать этого, если тег уже делает это. Документация не ясна по этому вопросу; Думаю, я тоже могу начать копаться в исходном коде.


person Pointy    schedule 07.05.2010    source источник
comment
@BalusC, да, это потрясающая идея, и я чувствую себя подавленным, потому что не подумал об этом.   -  person Pointy    schedule 08.05.2010
comment
Пожалуйста. Я превратил комментарий в ответ.   -  person BalusC    schedule 09.05.2010


Ответы (2)


Понятия не имею, так как я не использую Displaytag, но для дальнейшей отладки может быть полезно знать, что вы можете просто отобразить все эти атрибуты, просто напечатав ${pageScope} и ${requestScope} или зациклив их, как будто это Map с помощью JSTL c:forEach.

<c:forEach items="${requestScope}" var="entry">
    ${entry.key} = ${entry.value}<br>
</c:forEach>

Это может зафиксировать интересующий атрибут Displaytag.

person BalusC    schedule 08.05.2010
comment
Еще раз спасибо! Там действительно есть переменная области страницы, называемая mediaType. Кроме того, еще немного покопавшись в документации, я вспомнил, что тег столбца уже принимает атрибут мультимедиа, который определяет, какие типы мультимедиа подходят для столбца. - person Pointy; 09.05.2010

Используйте параметр HTTP-запроса TableTagParameters.PARAMETER_EXPORTTYPE.

ActionBeanContext context; // in your action bean class ...

String exportTypeStr = context.getRequest().getParamter(TableTagParameters.PARAMETER_EXPORTTYPE);
if (String.valueOf(MediaTypeEnum.EXCEL.getCode().equals (exportTypeStr)) {
    /// user selected export to Excel format ...
}
person Andy Malakov    schedule 21.06.2012