Проверьте, существует ли Cookie с JSP EL - PullRequest
8 голосов
/ 13 сентября 2011

Я пытаюсь проверить, существует ли файл cookie на странице JSP с использованием языка выражений.

У меня есть файл cookie с именем persist, для которого задана либо пустая строка, либо «флажок».

Если вы хотите проверить, существует ли файл cookie persist.

Я пробовал следующее:

<c:if test="${cookie.persist == null}">

<c:if test="${empty cookie.persist}">

Оба вышеприведенных оператора имеют вид true, когда значение файла cookie persist является пустой строкой, и значение false, если значение файла cookie равно checked.

.

Как отличить файл cookie с пустой строкой в ​​качестве значения от файла cookie, который не существует.

(Примечание: я могу легко обойти эту проблему, назначив непустое значение cookie вместо пустой строки.)

Ответы [ 4 ]

8 голосов
/ 13 сентября 2011

Самое близкое, что вы можете получить, это проверить имя файла cookie в заголовке запроса cookie.

<c:if test="${fn:contains(header.cookie, 'persist=')}">

Однако, когда есть другой файл cookie с именем foopersist, он не работает.

Если ваш контейнер поддерживает EL 2.2 (все контейнеры Servlet 3.0, такие как Tomcat 7, Glassfish 3 и т. Д.), То вы можете просто использовать Map#containsKey().

<c:if test="${cookie.containsKey('persist')}">

Если ваш нетЛучшее, что вы можете сделать, - это создать функцию EL (более конкретный пример объявления можно найти где-то в нижней части этого ответа ):

<c:if test="${util:mapContainsKey(cookie, 'persist')}">

с

public static boolean mapContainsKey(Map<String, Object> map, String key) {
    return map.containsKey(key);
}
0 голосов
/ 15 мая 2012

при использовании Tomcat 6 +

<c:if test="${ ! empty cookie['persist']}"> 
Cookie doesn't exist
</c:if>
0 голосов
/ 13 сентября 2011

используйте карту cookie, чтобы убедиться, что файл cookie существует или нет ${cookie["persist"] == null}

Я надеюсь, что он работает

0 голосов
/ 13 сентября 2011

Если я правильно понимаю, вы хотите обнаружить, что он либо не существует, либо пуст.

РЕДАКТИРОВАТЬ: ах.Чтобы убедиться, что он не существует, он должен быть нулевым и не пустым.

    <c:if test="${cookie.persist == null && cookie.persist != ''}">
   Cookie doesn't exist
    </c:if>
...