我需要创建一个Servlet,它将管理一些信息,然后将转到Liferay 6.2 Portlet。两者都在同一台服务器上。使用会话发送参数到Liferay Portlet
我需要Servlet发送参数,但我不想发送它GET,但POST方法。所以,我尝试将它放入会话中以从Portlet中检索它。
在Servlet中,我有:
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();
}
}
,并在Portlet的我管理在渲染方法的信息,因为我想获得的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参数我想评估。
之后,我不想在中间渲染一个页面,我想重定向到一个或另一个Portlet,具体取决于该评估。
我需要发送一些个人信息给这些Portlet,所以我想用POST方法发送一些参数。
Servlet不适合不与Portlet共享会话。我试图实现一个登陆Portlet,但重定向只能在操作阶段完成,所以我需要在重定向之前渲染一个(空)页面,不喜欢那个部分。渲染阶段不允许重定向(即使获取PortalUtil.getHttpServletResponse(),不起作用)
任何建议?谢谢!
编辑不会在没有阅读我的答案下的所有评论的情况下使情况更加清晰(即使那时我比混淆更清楚)。我建议您根据完整的业务需求和迄今为止所做的工作来开始另一个问题。就我而言,我正在考虑回答的最初问题,而更新是一个单独的问题。但是请不要只复制/粘贴部分,而是要连同代码一起描述您的需求。 –