我正在尝试将List<String[]>
对象传递给我的jsp页面并使用jstl处理它。
我的servlet:
request.setAttribute("rows", entries);
request.getRequestDispatcher("/pages/result.jsp").forward(request, response);
页:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
...
${rows}
<c:forEach items="${rows}" var="row">
<tr>
<c:forEach items="${row}" var="field">
<td>${field}</td>
</c:forEach>
</tr>
</c:forEach>
无法识别参数 - 意味着它们打印为${rows}
和${field}
<%
List<String[]> entries = (List<String[]>) request.getAttribute("rows");
for...
%>
我错过了什么?
答案 0 :(得分:1)
表示它们打印为$ {rows}和$ {field}
那么,EL表达式不会被评估?当使用的JSTL版本,使用的servletcontainer版本和webapp的web.xml
版本之间存在版本不兼容时,就会发生这种情况。
首先,您需要确定目标servletcontainer最大支持哪个Servlet API版本。然后,您可以确定实际需要哪个JSTL版本以及应该声明web.xml
的版本。
想象一下,您正在使用Tomcat 7,这是一个与Servlet 3.0兼容的容器,那么您应该至少使用JSTL 1.2并且web.xml
应该声明为符合Servlet 3.0。或者,如果你使用的是Tomcat 6,这是一个与Servlet 2.5兼容的容器,那么你应该至少使用JSTL 1.1并且web.xml
应该被声明为符合Servlet 2.5。
一个更为罕见的原因,但在初学者中并不少见,是webapp的/WEB-INF/lib
错误地被特定于servletcontainer的JAR文件混乱,例如el-api.jar
等等,这只会与EL安装发生冲突由目标servletcontainer本身提供。