我有一个java Constant.java文件,其中我定义了会话var名称,如下所示:
$param_ex = str_replace(array("&bg","&sp","&en"),array("{",":","}"),$param_exploded[1]);
在Servlet文件中,我使用以下命令定义会话var:
package com.pakageName;
public class Config {
// name of sessions var
public static final String ATT_SESSION_USER = "session_user";
public static final String ATT_SESSION_MESSAGE = "session_message";
...
}
Constant.java文件包含在我的jsp文件中:
session.setAttribute(Constant.ATT_SESSION_MESSAGE, "this is the content of the var I wan't to display on the page");
所以我可以通过以下方式获取sessionScope var的内容:
<%@ page import="com.pakageName.Config" %>
问题是,如何使用带有常量变量值的删除标记删除那些会话变量?
我尝试了以下但是var属性不接受el表达式...
// get the content of the session var
${sessionScope[Constant.ATT_SESSION_MESSAGE]}
// which return the same result as
${sessionScope.session_message}
有什么想法吗?
答案 0 :(得分:0)
我可以看到的问题是你实际上并没有在第一时间设置会话变量。你所做的只是调用一个公共变量。因此,当您认为要删除会话变量时,您实际上并没有做任何事情。这就是它坚持的原因。
首先尝试使用以下方法设置会话变量:
session.setAttribute("user", Constant.ATT_SESSION_MESSAGE);
或使用JSTL:
<c:set var="user" value="${Constant.ATT_SESSION_MESSAGE}" scope="session" />
然后用:
将其删除<c:remove var="user"/>
答案 1 :(得分:0)
我找到了一种通过jsp scriptlet实现我想要的方法...
<% session.removeAttribute(Config.ATT_SESSION_MESSAGE); %>
jstl无法获得相同的结果?