JSTL动态删除标记

时间:2017-08-24 13:12:07

标签: jsp jstl el

我有一个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}

有什么想法吗?

2 个答案:

答案 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无法获得相同的结果?