我有以下代码:
String[] columnHeaders = {"Banana", "Apple", "Carrot", "Orange", "Lychee", "Permisson"};
<c:forEach var="header" items="<%= columnHeaders%>">
<td>
<c:out value="${header}" />
</td>
</c:forEach>
Run Code Online (Sandbox Code Playgroud)
执行JSP时,将打印以下值:
org.apache.commons.el.ImplicitObjects$7@6ac86ac8
org.apache.commons.el.ImplicitObjects$7@6ac86ac8
...
Run Code Online (Sandbox Code Playgroud)
在我看来,正在打印内存值,而不是每个字符串中包含的值.我在这里错过了什么?
Bal*_*usC 14
您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>
Run Code Online (Sandbox Code Playgroud)
另外,${header}是一个引用请求标头映射的保留EL变量(请参阅EL中的隐式对象),您需要将其重命名为其他内容,例如${columnHeader}上例中的内容.
与具体问题无关,表标题需要用HTML表示<th>,而不是<td>.
| 归档时间: |
|
| 查看次数: |
37280 次 |
| 最近记录: |