0

ページ間で操作できるセッションを設定しようとしていますが、このコードを使用してセッションを設定できました

HttpSession session1 = request.getSession(false);
String foo = (String) session1.getAttribute("password");
session1.setAttribute("password","authenticated");
out.println(foo);

このコードは、カスタム JSP フック ( Journal_content/view.jsp )で記述されています。

セッションがブラウザに保存されているかどうかも確認しました。あるページから別のページに移動すると、セッションを読み取ることができないため、パスワード コードを入力するように求められます。

Liferayでこれを作成する方法を誰か教えてもらえますか?.

4

2 に答える 2

3

次のようPortletSessionに代わりに使用できると思います。HttpSession

PortletSession portletSession = renderRequest.getPortletSession();
portletSession.setAttribute("password", "authenticated", PortletSession.APPLICATION_SCOPE);

...そして属性を取得する場合:

String pwd = (String) portletSession.getAttribute("password", PortletSession.APPLICATION_SCOPE);

liferay の OOTB ポートレットは で定義<private-session-attributes>false</private-session-attributes>されているliferay-portlet.xmlため、上記のコードはsessionをポータル全体と共有します。

liferay-portlet.xmlの使用に関する DTDからの小さなメモ<private-session-attributes>:

private-session-attributesポートレットがセッション属性をポータルと共有しない場合は、値を true に設定します。デフォルト値は true です。session.shared.attributesportal.propertiesのプロパティーは、private-session-attributes 値が true の場合でも共有されるセッション属性を指定します。

これが役立つかどうか教えてください。

于 2012-09-13T14:05:43.040 に答える
0

フックからポートレットにオブジェクトを共有するために、ここに回答を投稿しました。

ポートレット間でオブジェクトを共有したい場合は、元のポートレットの liferay-portlet.xml ファイルで false を設定する必要があります。

于 2013-08-30T02:55:29.693 に答える