Java 将DelegatingResultSet更改为可编辑列表

Java 将DelegatingResultSet更改为可编辑列表,java,jstl,resultset,Java,Jstl,Resultset,基本上,我试图将ResultSet变量从控制器发送到jsp页面,并使用forEach for jstl对其进行迭代。以下是控制器结果集代码: String sql = "{call GetDIF_List()}"; CallableStatement stmt = conn.prepareCall(sql); ResultSet rs = stmt.executeQuery(); request.setAttribute("recordSet

基本上,我试图将ResultSet变量从控制器发送到jsp页面,并使用forEach for jstl对其进行迭代。以下是控制器结果集代码:

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);
当尝试使用forEach在jsp文件中调用“org.apache.tomcat.dbcp.dbcp.DelegatingResultSet”类型时,它返回一个“org.apache.tomcat.dbcp.dbcp.DelegatingResultSet”类型,而forEach没有使用jstl中的sql:query获得的.rows属性

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或类似的方法来迭代它。除非我俯瞰它


感谢您的建议或帮助。

我能够在jstl forEach的jsp文件中进行迭代。我对它不太感兴趣,因为我基本上必须遍历控制器中的记录集,并使用我创建的类的类型将项目添加到通用列表中。然后我用forEach循环迭代了这个通用列表。我提到的唯一一个对这个解决方案不太满意的原因是,迭代结果只是为了使它标准化为使用jstl。其中as scriptlets允许一个循环,这在更大的应用程序中似乎具有更好的性能优势。一旦我深入了解spring、struts、hibernate或其他软件,它们可能会有更好的解决方案。