将DelegatingResultSet更改为Iterable List

时间:2014-01-09 21:35:57

标签: java jstl resultset

基本上我试图将一个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或类似的用来迭代它。除非我忽视它。

感谢您提出任何建议或帮助。

0 个答案:

没有答案