uCosminexus Portal Frameworkおよびポートレットは同一のサーブレット空間で動作します。そのため,HttpSessionおよびServletContextに設定するアトリビュート名は,すべてのポートレットで共有します。
ポートレット間で異なるアトリビュート名を指定するには,ポートレットユティリティクラスライブラリのPortletUtils#getNamespaceを使用してアトリビュート名を修飾する必要があります。PortletUtilsクラスの詳細は「14.4 ポートレットユティリティクラスライブラリ」を参照してください。また,アトリビュート名のプレフィックスとして"jp.co.hitachi.soft.portal","turbine","jetspeed"は使用できません。
アトリビュート設定と取得方法を次の表に示します。
表A-1 アトリビュート設定と取得方法
アトリビュート格納先 | スコープ | ポートレット開発者の対応 |
---|---|---|
PageContext | page | JSPページ単位なので,ポートレットとしての対応は必要ありません。 |
ServletRequest | request | ポートレットで設定されたアトリビュートはポートレットを戻したあとに削除されます。ポートレット内でユニークなネームスペースが保証されるのでポートレットとしての対応は必要ありません。 |
HttpSession | session | PortletUtils#getNamespaceでユニークなネームスペースを取得してアトリビュート名を修飾します。 |
ServletContext | application | PortletUtils#getNamespaceでユニークなネームスペースを取得してアトリビュート名を修飾します。 |
JSPのjsp:useBeanアクションでスコープ属性がsessionおよびapplicationのBeanは,それぞれHttpSessionおよびServletContextにアトリビュートとして格納されます。そのため,該当するjsp:useBeanアクションは,ネームスペースを設定するようにスクリプトレットに置き換える必要があります。
アトリビュート操作の例を次に示します。
String msg = "Hello";
String namespace = PortletUtils.getNamespace(request, response);
session.setAttribute(namespace+"アトリビュート名", msg);
String namespace = PortletUtils.getNamespace(request, response);
String msg = (String)session.getAttribute(namespace+"アトリビュート名");