基本上我试图将一个ResultSet变量从Controller发送到jsp页面并使用forEach for jstl进行迭代。以下是Controller ResultSet代码:
String sql = "{call GetDIF_List()}";
CallableStatement stmt = conn.prepareCall(sql);
ResultSet rs = stmt.executeQuery();
request.setAttribute("recordSet", rs);
request.getRequestDispatcher("/dif/list.jsp").forward(request, response);
当尝试在jsp文件中调用它时,返回“org.apache.tomcat.dbcp.dbcp.DelegatingResultSet”类型,而forEach没有.rows属性,就像使用sql:query一样在jstl。
JSP文件代码片段:
<%
org.apache.tomcat.dbcp.dbcp.DelegatingResultSet drs = (org.apache.tomcat.dbcp.dbcp.DelegatingResultSet)request.getAttribute("recordSet");
while (drs.next())
{
out.println(drs.getString("DIF_Name") + "<br/>");
}
%>
<table>
<c:forEach var="item" items="${recordSet.rows}">
<tr><td><a href="/DI_MVC/DIFController?action=edit&id=${item.DIF_ID}">${item.DIF_Name}</a></td></tr>
</c:forEach>
</table>
正如您在上面所看到的,使用scriptlets标记并将我的请求对象变量转换为DelegatingResultSet可以获得我想要的结果。虽然我想使用更标准的方法来使用jstl和forEach但是recordSet变量没有.rows或类似的用来迭代它。除非我忽视它。
感谢您提出任何建议或帮助。