いくつかの情報を管理するサーブレットを作成する必要があります。その後、Liferay 6.2ポートレットに移動します。両方とも同じサーバー内にあります。セッションを使用してLiferayポートレットにパラメータを送信する
パラメータを送信するにはサーブレットが必要ですが、GET、POSTメソッドは送信しません。したがって、ポートレットから取得するためにセッションに入れようとします。サーブレットで
は、私が持っている:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
request.getSession().setAttribute("param1", "TEST 1");
url = "http://myServer/";
response.sendRedirect(response.encodeRedirectURL(url));
} catch (Exception e) {
e.printStackTrace();
}
}
そして私は、私はページをレンダリングする前のparam1を取得したいと私は、レンダリング方法で情報を管理ポートレットで:
public void render (RenderRequest renderRequest, RenderResponse renderResponse)
throws PortletException, IOException {
super.render(renderRequest, renderResponse);
//Try to retrieve from getOriginalServletRequest
HttpServletRequest servletReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(renderRequest));
String param1 = servletReq.getSession().getAttribute("param1").toString();
//Try to retrieve from getHttpServletRequest
HttpServletRequest servletReq_ = PortalUtil.getHttpServletRequest(renderRequest);
String param1_ = servletReq_.getSession().getAttribute("param1").toString();
}
ように私はgetHttpServletRequestとgetOriginalServletRequestから取得しようとしましたが、私は常にparam1 nullを取得します。
提案がありますか? ありがとうございます!
アップデート質問:
私は第三部から呼び出されている、と私は私は評価したいGETパラメータを受信しています。
その後、ページを中央に表示しないで、その評価に応じて、1つまたは別のポートレットにリダイレクトしたいと考えています。
これらのポートレットに個人情報を送信する必要があるため、POSTメソッドでいくつかのパラメータを送信します。
サーブレットは、ポートレットとのセッションを共有しないため、適合しません。
私は着陸ポートレットを実装しようとしましたが、リダイレクトはアクションフェーズでしか実行できないため、リダイレクトの前に(空の)ページをレンダリングする必要があります。レンダリングフェーズではリダイレクトは許可されません(PortalUtil.getHttpServletResponse()を取得しても動作しません)
提案がありますか?ありがとう!
編集では、私の答えの下にあるすべてのコメントを読まなくても状況がより明確になるわけではありません(さらには、わかりやすく混乱します)。私は完全なビジネス要件とこれまでのやり方で別の質問を開始することをお勧めします。限り、私は懸念している、私は最初の質問に答えていると考えており、更新は別の質問です。しかし、その部分をコピー/貼り付けするのではなく、コードとともに要件の説明を与えてください。 –