Check if Cookie exists with JSP EL

匿名 (未验证) 提交于 2019-12-03 02:56:01

问题:

I am trying to check if a cookie exists on a JSP page using the Expression Language.

I have a cookie called persist which is set to either empty string or "checked".

If would like to check if the persist cookie exists.

I have tried the following:

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

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

Both of the above statements are true when the value of the persist cookie is the empty string and false when the value of the cookie is checked.

How do I distinguish between a cookie with the empty string as its value, and a cookie that does not exist.

(Note: I can easily work around this problem by assigning a non empty value to the cookie instead of the empty string.)

回答1:

Closest what you can get is to check the cookie name in the request cookie header.

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

However, when there's another cookie with name foopersist, it fails.

If your container supports EL 2.2 (all Servlet 3.0 containers like Tomcat 7, Glassfish 3, etc do) then you could just use Map#containsKey().

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

If yours doesn't, best what you can do is to create an EL function (more concrete declaration example can be found somewhere near bottom of this answer):

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

with

public static boolean mapContainsKey(Map<String, Object> map, String key) {     return map.containsKey(key); } 


回答2:

use the cookie map to check that cookie exists or not ${cookie["persist"] == null}

I hope it works



回答3:

If I understand correctly, you want to detect that it either doesn't exist or is empty.

EDIT: ah. To verify that it doesn't exist, it must be null and not empty.

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


回答4:

if using Tomcat 6+

<c:if test="${ ! empty cookie['persist']}">  Cookie doesn't exist </c:if> 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!