0

セッションの使用に問題があります。view.jspで、ユーザー名とパスワードを取得し、それらをポートレットクラスに渡します。次に、データベースからユーザー情報を取得してセッションに保存し、「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の[戻る]リンクをクリックしてpatientInfo.jspに戻ると、スタックトレースに「java.SQL.Excqption:結果セットの終了後」エラーが表示され、ブラウザに「ポートレットが利用できません」というエラーが表示されます。 :

<portlet:renderURL var="patientInfoURL">

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

</portlet:renderURL>

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

1 に答える 1

0

ResultSet と一部の JDBC ドライバーによってサポートされるすべてのものをセッションに保存するのはよくありません。通常、バックエンドでデータベース接続が必要です。最初のトランザクション (およびページのレンダリング) が完了した後、次のトランザクションで接続が再利用されるため、例外が発生します。

データベース接続を持たないビジネス/データ転送オブジェクトに、持っているオブジェクトをコピーする必要があります (とにかくデータベースからそれらを取得するにはどうすればよいですか? プレーン/純粋な jdbc アクセス?)。

于 2012-04-21T14:41:46.710 に答える