java - 使用 JSP EL 检查 Cookie 是否存在

标签 java jsp servlets el

我正在尝试使用表达式语言检查 JSP 页面上是否存在 cookie。

我有一个名为 persist 的 cookie设置为空字符串或“选中”。

如果想检查 persist cookie 存在。

我尝试了以下方法:

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

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

以上两种说法都是truepersist 的值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/

相关文章:

java - 如何使用 'null'参数调用本地方法

java - 根据 java 中的本地化更改语言

java - JSP 中的服务器端重定向和客户端重定向 - 哪个更好?

java - 重构值对象的疯狂继承层次结构——如何获取所有字段和类型的列表?

java - 无法使用 HTTP 客户端传输图像

java - CXF 客户端返回 NullPointerException

jsp - 升级正在运行的 Tomcat servlet

java - 请求后如何持久化请求数据

tomcat - java.io.FileNotFoundException :/usr/lib/jvm/java-7-openjdk-i386/jre/lib/ext/javax. mail.jar(权限被拒绝)

java - 我可以使用 servlet 在 Web 容器中进行这种复杂的 url 映射吗?