Проверьте, содержит ли список элементы или нет
Требование заключается в том, что мне нужно отображать некоторые флажки в столбце на странице jsp в таблице, если они настроены для отображения или нет.
В классе My action у меня есть логика, которая выбирает значения конфигурации из базы данных и сохраняет ее в виде массива.
Теперь вопрос:
я должен сохранить массив в сеансе или что-то еще, чтобы я мог получить к нему доступ внутри метода декоратора и вернуть соответствующий HTML-код для отображения флажка или нет?
Или я должен просмотреть список на странице jsp и посмотреть, присутствует ли запись (см. Идентификатор в JSP) в списке, а затем отобразить столбец?
Лично мне нравится второй подход, но я не знаю, как это сделать.
Вот моя страница JSP.
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ taglib uri="/tags/star" prefix="star" %>
<%@ taglib uri="http://displaytag.sf.net" prefix="display" %>
<div id="tableContainer" class="tableContainer95">
<display:table id = "displayTable"
name = "contentToDisplay"
class = "scrollTable"
decorator = "decoractorClass">
<display:column property = "displayTextField()"
titleKey = "ID"/>
<!--Only display checkbox if ID is present in some list in action class-->
<display:column property = "displayCheckBox()"
sortable = "false"
headerClass = "sortable" />
1 ответ
Оба подхода хороши.
Если вы пойдете со стороны клиента, вы можете сделать это несколькими способами (с условием в JSTL, в OGNL и т. Д.).
Поскольку вы используете Struts2, используйте OGNL, что-то вроде:
<display:column>
<s:if test="%{myId in someList}">
<s:checkbox ... />
</s:if>
</display:column>
Обратите внимание, что для получения PageContext вам нужно использовать #attr
и после этого вам нужно вызвать экземпляр таблицы через ее uid
, как описано в этом ответе.