在liferay portlet中使用session时出现sql.exception错误

时间:2012-04-21 13:33:40

标签: jsp liferay

我在使用会话时遇到了一些问题。在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 is teprorily unavailable”错误:

<portlet:renderURL var="patientInfoURL">

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

</portlet:renderURL>

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

1 个答案:

答案 0 :(得分:0)

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

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