需要了解@Autowired
在此代码中执行的操作。我对scope=session
感到困惑?这是否意味着现在user
中可以使用HttpSession
?如何从HttpSession
检索它?如果我删除了redirectAttrs.addFlashAttribute("user", user);
,那么我在JSP
页面中看不到该用户?
用户类及其映射如下
<bean id="user" class="example.User" scope="session">
<aop:scoped-proxy/>
</bean>
下面的控制器重定向到另一个控制器,该控制器除了登陆页面的位置之外不包含任何内容.jsp
@Autowired
@Qualifier("user")
private User user;
@RequestMapping(method=RequestMethod.POST)
public String post(@ModelAttribute User user, BindingResult result, SessionStatus status, final RedirectAttributes redirectAttrs) {
logger.info("post");
new UserValidator().validate(user, result);
if (result.hasErrors()) {
return "login";
}
else {
status.setComplete();
logger.info("Email Id: " + user.getEmailId());
redirectAttrs.addFlashAttribute("user", user);
return "redirect:/landing.htm";
}
}
答案 0 :(得分:2)
范围会话意味着将保留用户对象,直到客户端会话被销毁。这并不意味着你在HttpSession对象中拥有它。 @Autowired注释用于自动连接用户bean。它用于从应用程序上下文中获取bean并将其分配给Java类中的本地变量。