0

我在使用会话时遇到了一些问题。在 view.jsp 中,我得到用户名和密码并将它们传递给 portlet 类。然后我从数据库中获取用户信息并将它们保存在会话中,然后使用“actionResponse.setRenderParameter("jspPage","/patientInfo.jsp")" 命令转到 patientInfo.jsp。我获取用户信息并使用以下代码打印它们:

<%  
ResultSet comments = (ResultSet)portletSession.getAttribute("comments");
ResultSet patientInfo = (ResultSet)portletSession.getAttribute("patientInfo");  
patientInfo.next();         
%>
<table>
<tr>
    <th><strong>Patient Name</strong></th>
    <th><strong>Insuline dose</strong></th>
</tr>
<tr>
    <td class="info"><%=patientInfo.getString("FirstName") + patientInfo.getString("LastName")%></td>
    <td class="info"><%=Integer.toString(patientInfo.getInt("InsulinDose"))%></td>
</tr>

在此页面中,有一个指向 patientProfile.jsp 的链接:

<portlet:renderURL var="patientProfileURL">
    <portlet:param name="jspPage" value="/patientProfile.jsp" />
</portlet:renderURL>

<a href="<%= patientProfileURL%>">Edit Profile</a></p>

到目前为止一切正常。但是,当我点击 PatientProfile.jsp 中的 Back 链接以使用以下代码返回到 patientInfo.jsp 时,堆栈跟踪中出现“java.SQL.Excqption:结果集结束后”错误,并且浏览器上出现“portlet 暂时不可用”错误:

<portlet:renderURL var="patientInfoURL">

    <portlet:param name="jspPage" value="/patientInfo.jsp" />

</portlet:renderURL>

<p><a href="<%= patientInfoURL %>">Back</a></p>
4

1 回答 1

0

结果集和某些 JDBC 驱动程序支持的所有内容在会话中保存是一件坏事。通常,他们需要后端的数据库连接 - 在第一个事务(和页面呈现)完成后,该连接将被重用于下一个事务,因此您会看到异常。

您应该将您拥有的对象(无论如何如何从数据库中检索它们?普通/纯 jdbc 访问?)复制到一些没有任何数据库连接的业务/数据传输对象。

于 2012-04-21T14:41:46.710 回答