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

时间:2015-04-21 09:43:48

标签: java jsp jsp-tags

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

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

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

JSP PAGE:

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

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

2 个答案:

答案 0 :(得分:2)

<% scriptlets %>或类成员<%! ... %>中声明的局部变量不属于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>

答案 1 :(得分:2)

尝试pageContext:

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

OR

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