【问题标题】:How to get session attribute with a dynamic key in EL?如何在 EL 中使用动态键获取会话属性?
【发布时间】:2012-01-08 16:53:59
【问题描述】:

如果我这样设置会话:

<% 
session.setAttribute("taintedAttribute", "what ever we want");
%>

通常我们可以在EL中得到这样的会话变量

${sessionScope.taintedAttribute }

但是如果我想这样做呢

<% 
String name = "taintedAttribute";
//session.setAttribute(name, "what ever we want");
session.getAttribute(name);
%>

那我们如何在 EL 中调用呢?

EL 可以得到类似${sessionScope.---dynamic name ---} 的东西吗?

如果我这样做:

<c:set var="name" value="taintedAttribute" />
<c:out value="${sessionScope.[name]}"/>

名称将替换为taintedAttribute,与此行相同

${sessionScope.taintedAttribute}

这可能吗?我该怎么做?

【问题讨论】:

  • 不把java代码写在scriptlet中,全部在服务器端做,尽量维护MVC怎么样。
  • 我只想在 jsp 页面中使用 jstl。这就是为什么我问如何做到这一点。呵呵。我需要这段代码来检查这个会话,在 jsp 中显示一些东西。
  • @NurAini:关键是,您根本不应该在 JSP 中更改应用程序状态(包括会话属性)。无论是使用 scriptlet 还是 JSTL。
  • 对不起。这不是我想更改任何应用程序状态。我只是想检查该会话属性是否存在。我编辑了这个问题,因为我犯了一个错误。我实际上想要 jstl 中的 session.getAttribute(name) 之类的东西。

标签: java jsp jstl el


【解决方案1】:
<c:set var="name" value="taintedAttribute" />
<c:out value="${sessionScope.[name]}"/>

你很亲密。删除句号。

<c:set var="name" value="taintedAttribute" />
<c:out value="${sessionScope[name]}"/>

另见:

【讨论】:

    【解决方案2】:

    http://www.java2s.com/Code/Java/JSTL/JSTLSetVariablesScope.htm

    <c:set var="test" value="Session Level Value"
        scope="session" />
    <c:out value="${sessionScope.test}" />
    

    【讨论】:

    • 您好,感谢您的回复,很抱歉我在代码中犯了错误。我已经编辑了问题并评论了错误的行。我实际上想在 jstl 中编写类似 session.getAttribute(name) 的东西。这是可以在jstl中完成的吗?
    猜你喜欢
    • 1970-01-01
    • 2011-04-04
    • 1970-01-01
    • 1970-01-01
    • 2015-04-19
    • 1970-01-01
    • 1970-01-01
    • 2014-10-18
    • 1970-01-01
    相关资源
    最近更新 更多