-6ren">
gpt4 book ai didi

java - 当使用 JSTL forEach 时,数组打印 String.toString() 而不是实际的字符串值

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:06:22 24 4
gpt4 key购买 nike

我有以下代码:

String[] columnHeaders = {"Banana", "Apple", "Carrot", "Orange", "Lychee", "Permisson"};

<c:forEach var="header" items="<%= columnHeaders%>">
<td>
<c:out value="${header}" />
</td>
</c:forEach>

执行 JSP 时,将打印以下值:

org.apache.commons.el.ImplicitObjects$7@6ac86ac8 
org.apache.commons.el.ImplicitObjects$7@6ac86ac8
...

在我看来,打印的是内存值,而不是每个字符串中包含的值。我在这里缺少什么?

最佳答案

您正在引用 items值不正确。 Taglibs/EL 和scriptlet 不共享相同的变量范围。你基本上是在打印 columnHeaders.toString()items属性和告诉c:forEach迭代它。相反,您需要将它放在请求范围内(最好通过 servlet)并使用 EL ${}正常方式:

<%
String[] columnHeaders = {"Banana", "Apple", "Carrot", "Orange", "Lychee", "Permisson"};
request.setAttribute("columnHeaders", columnHeaders);
%>

<c:forEach var="columnHeader" items="${columnHeaders}">
<td>
<c:out value="${columnHeader}" />
</td>
</c:forEach>

此外,${header}是引用请求 header 映射的保留 EL 变量(请参阅 implicit objects in EL ),您需要将其重命名为其他名称,例如 ${columnHeader}在上面的例子中。

另见:


与具体问题无关,表格标题需要在 HTML 中表示为 <th> , 不是 <td> .

关于java - 当使用 JSTL forEach 时,数组打印 String.toString() 而不是实际的字符串值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8564093/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com