我是Spring Portlet MVC的新手,但是我在过去的几天里一直在努力学习。 我的问题的背景是以下
现在,我该如何通过拦截器从控制器内部检索存储在PortletSession中的用户数据?
sessionInterceptor.preHandleRender
@Override
public boolean preHandleRender(RenderRequest request, RenderResponse response, Object handler) throws Exception {
PortletSession session = request.getPortletSession(true);
.
.
.
session.setAttribute("userProfile", userProfileDomain,PortletSession.APPLICATION_SCOPE);
.
.
.
return true;
}
ViewController类
@Controller("viewController")
@RequestMapping(value = "view")
public class ViewController {
//@Autowired
private WebServiceTemplate webServiceTemplate = new WebServiceTemplate();
@RenderMapping
public String setModelAndView(RenderRequest request, ModelMap tgtModel) {
logger.debug("<< | >> Starting.");
PortletConfiguration conf = PortletConfiguration.getInstance();
.
.
}
}
如果有要求,我准备提供有关我的代码的更多信息。
答案 0 :(得分:1)
我能够解决问题并识别我的错误。
在拦截器中,正如我在问题中所示,我在PortletSession.APPLICATION_SCOPE中设置了会话属性“userProfile”。
session.setAttribute("userProfile", userProfileDomain,PortletSession.APPLICATION_SCOPE);
至于控制器,我知道你有多种选择:
但是,无论您是走第一道还是第二道,如果您在控制器中使用以下说明,
session.getAttribute("userProfile");
你不会得到任何东西,因为该属性是在PortletSession.APPLICATION_SCOPE中设置的。
正确的说明是:
session.getAttribute("userProfile",PortletSession.APPLICATION_SCOPE);
答案 1 :(得分:0)
Spring MVC如果将其指定为参数,则将PortletSession连接起来。
@RenderMapping
public String setModelAndView(RenderRequest request, PortletSession session, ModelMap tgtModel) {
logger.debug("<< | >> Starting.");
PortletConfiguration conf = PortletConfiguration.getInstance();
.
.
}