【问题标题】:How to retrieve a session scoped object list using JSTL? [duplicate]如何使用 JSTL 检索会话范围的对象列表? [复制]
【发布时间】:2025-12-26 16:35:06
【问题描述】:

假设我有一个静态类 A,它有几个公共的 final 静态字段。

public class Foo{
    public static final String A_STRING = "a_string";
}

我还有一些类会在会话中设置一个列表,如下所示:

List<Bar>barList = getBarList(); session.setAttribute(Foo.A_STRING, barList);

我想从 jsp 中访问这个列表并遍历每个 Bar 对象并输出每个 Bar 对象的字段。

我想出了这个:

<c:forEach items="${sessionScope[Foo.A_STRING]}" var="element">
<tr>
<td>${element.id}</td>
td>${element.name}</td>
...
</tr></c:forEach>

这不起作用,任何帮助将不胜感激,谢谢。

【问题讨论】:

  • Foo.A_STRING 不会得到解决,试试这个${sessionScope[a_string]}
  • 不起作用。但是, ${sessionScope.a_string} 确实有效,但我不希望那样。我不想硬编码字符串文字。

标签: java session jstl el


【解决方案1】:

首先,将${sessionScope[Foo.A_STRING]} 更改为${sessionScope.a_string}

其次,你的变量名不一致(elementselement),改变其中一个使其一致。

<c:forEach items="${sessionScope.a_string}" var="element">
    <tr>
        <td>${element.id}</td>
        <td>${element.name}</td>
    ...
    </tr>
</c:forEach>

【讨论】:

  • 感谢您的回复。它确实有效,但我不想硬编码“a_string”。有办法吗?第二个问题是固定的。这是一个错字。感谢您的关注。