Проверьте, содержит ли список элементы или нет

Требование заключается в том, что мне нужно отображать некоторые флажки в столбце на странице 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, как описано в этом ответе.

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