ポートレット セッションの属性がテーマから見つかりません
knowledge-article-header-disclaimer-how-to
knowledge-article-header-disclaimer
legacy-article
learn-legacy-article-disclaimer-text
問題
- 次のように、ポートレットのセッションで属性を設定します。
@Override
public void render(
RenderRequest renderRequest, RenderResponse renderResponse)
throws IOException, PortletException {
HttpServletRequest httpServletRequest = PortalUtil.getHttpServletRequest(renderRequest);
HttpSession httpSession = httpServletRequest.getSession();
httpSession.setAttribute("myAttributeKey", "myAttributeValue");
super.render(renderRequest, renderResponse);
}
- 次のように、カスタム テーマの
portal_normal.ftl
(またはその他のテンプレート) で値 "myAttributeValue"
を復元してみてください。
${(request.session.getAttribute("myAttributeKey"))!"null"}
- ポートレットがデプロイされているページでテーマがレンダリングされると、値が見つかりません (したがって null が出力されます)。
- すべての属性を一覧表示すると、長いプレフィックスを持つ属性キーが表示されます。
equinox.http.${my-portlet-package-name}myAttributeKey
解決策
- ほとんどの場合、接頭辞は
equinox.http です。${my-portlet-package-name}
は、属性の設定および取得時にシームレスに追加および削除されます。
- この状況でもこの動作を行う 1 つの方法は、次のように、ポートレットで元のサーブレット リクエストを使用することです。
HttpServletRequest httpServletRequest = PortalUtil.getHttpServletRequest(renderRequest);
HttpServletRequest originalServletRequest = PortalUtil.getOriginalServletRequest(httpServletRequest);
HttpSession httpSession = originalServletRequest.getSession();
httpSession.setAttribute("myAttributeKey", "myAttributeValue");
did-this-article-resolve-your-issue