如何在 c:forTokens 和 c:forEach 的项目属性中使用变量值

How to use a variable value in items attribute of c:forTokens and c:forEach

我有一个 jsp 页面,它将从文本文件中读取数据,并将其格式化为表格形式。

从文本文件返回到 JSP 中的内容如下:

ABC:::XYZ:::POR:::STV
asd:::fgh:::hjk:::lkj
zxc:::cvb:::nmn:::aaa

JSP 页数:

<%! String content = MyFileReader.readData()); %>
<c:forTokens items="ABC:::XYZ:::POR:::STV" delims="::::" var="name">
<c:out value="${name}"/><br>
</c:forTokens>

而不是 items="ABC:::XYZ:::POR:::STV",我想在项目属性中使用 content 变量。 items="${content}" 对我不起作用。

<% scriptlets %> 或 class 成员 <%! ... %> 中声明的局部变量不是 EL 作用域的一部分。您需要将此值移动到 page request sessionapplication 范围,例如使用

<c:set scope="page" value="<%=content %>" var="value"/>

然后通过${value}访问它,比如

<c:forTokens items="${value}" delims="::::" var="name">
    <c:out value="${name}" /><br />
</c:forTokens>

试试 pageContext:

<% pageContext.setAttribute("content", MyFileReader.readData()); %>

<c:set scope="page" value="<%=MyFileReader.readData() %>" var="content"/>