Цикл JSTL через массив, чтобы НЕ отображать содержимое

#arrays #iteration #jstl #el

#массивы #итерация #jstl #el

Вопрос:

Я хотел бы использовать «Массив» в JSTL, который выглядит следующим образом

 <c:set var="hideMe" value="${['A','B','C','D']}" scope="application" />
  

У меня также есть вызываемый глобальный ${checkPageName} параметр, в котором указано имя текущей страницы, на которой я нахожусь, поэтому я могу свериться с ним, как часть логики (например <c:if test="${checkPageName != hideMe}"> ... </c:if> )

Логика, лежащая в основе этого, заключается в том, что если A, B, C or D существует, то я буду препятствовать отображению определенной части информации пользователю.

Кто-нибудь знает, как я перебираю массив JSTL?

Затем логика должна решить, что если A, B, C or D НЕ существует, то мы показываем конкретную информацию пользователю.

Я пробовал;

 <c:forEach items="${hideMe}">
    <c:set var="hide" value="true" />
</c:forEach>

<c:if test="${hide != 'true'}">
    <div class="showMe">
        <h1>Hello Sweetie</h1>
    </div>
</c:if>
  

Не мог бы кто-нибудь указать мне правильное направление?

ОБНОВЛЕНИЕ: теперь я исправил это сам, используя <c:forTokens> , см. Решение ниже

Ответ №1:

Итак, я понял это в конце;

 <c:set var="hideMe" value="false" />

<c:forTokens items="A,B,C,D" delims="," var="excludeDisplay">
    <c:if test="${checkPageName == excludeDisplay}">
        <c:set var="hideMe" value="true" />
    </c:if>
</c:forTokens>

<c:if test="${hideMe == 'false}">
    DO SOMETHING
</c:if>
  

checkPageName — это глобальная переменная, которую я проверяю в своем коде для проверки правильности имен страниц…

Итак, я устанавливаю переменную по умолчанию с именем HideMe со значением false, затем я использую forTokens для создания переменной с именем excludeDisplay для значений A, B, C или D.

Затем я сверяю эти значения с моей глобальной переменной и, если они совпадают, перезаписываю скрытую переменную значением true, которое затем используется для запуска содержимого, которое я хочу показать. Если значение переменной равно false, покажите содержимое, если оно true, ничего не делайте.

Я надеюсь, что это поможет кому-то еще, и я рад подробнее остановиться на некоторых более темных моментах, если кому-то нужна дополнительная информация…