我正在尝试使用表达式语言检查 JSP 页面上是否存在 cookie。
我有一个名为 persist
的 cookie设置为空字符串或“选中”。
如果想检查 persist
cookie 存在。
我尝试了以下方法:
<c:if test="${cookie.persist == null}">
<c:if test="${empty cookie.persist}">
以上两种说法都是true
当 persist
的值cookie 为空字符串,cookie 值为checked
时为false .
如何区分值为空字符串的 cookie 和不存在的 cookie。
(注意:我可以通过为 cookie 分配一个非空值而不是空字符串来轻松解决这个问题。)
最佳答案
最接近的是检查请求 cookie
header 中的 cookie 名称。
<c:if test="${fn:contains(header.cookie, 'persist=')}">
但是,当有另一个名为 foopersist
的 cookie 时,它会失败。
如果您的容器支持 EL 2.2(所有 Servlet 3.0 容器,如 Tomcat 7、Glassfish 3 等),那么您可以只使用 Map#containsKey()
。
<c:if test="${cookie.containsKey('persist')}">
如果您的没有,最好的办法是创建一个 EL 函数(更具体的声明示例可以在 this answer 底部附近的某处找到):
<c:if test="${util:mapContainsKey(cookie, 'persist')}">
与
public static boolean mapContainsKey(Map<String, Object> map, String key) {
return map.containsKey(key);
}
关于java - 使用 JSP EL 检查 Cookie 是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7395176/