我正在尝试使用表达式语言检查JSP页面上是否存在cookie。
我有一个Cookie persist,它被设置为空字符串或“选中”。
persist
如果要检查persistcookie是否存在。
我尝试了以下方法:
<c:if test="${cookie.persist == null}">
<c:if test="${empty cookie.persist}">
以上两个语句都是true在persistcookie的值为空字符串时返回的,而在cookie的值为时为false checked。
true
checked
如何区分以空字符串作为其值的cookie和不存在的cookie。
(注意:我可以通过为cookie分配一个非空值而不是空字符串来轻松解决此问题。)
最接近的是检查请求cookie标头中的cookie名称。
cookie
<c:if test="${fn:contains(header.cookie, 'persist=')}">
但是,当另一个cookie名为name时foopersist,它将失败。
foopersist
如果您的容器支持EL 2.2(所有Servlet 3.0容器,例如Tomcat 7,Glassfish 3等),则可以使用Map#containsKey()。
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); }