springmvc @SessionAttributes @ModelAttribute 取session值问题

[b]springmvc @SessionAttributes @ModelAttribute 取session值问题
[/b]

public class User implements Serializable{
private String id;


@Controller
@SessionAttributes(Constants.USER_INFO_SESSION)
public class LoginControll {
@RequestMapping(value = "login.html", method = RequestMethod.POST)
public String login(
@RequestParam(value = "username", required = false) String username,
@RequestParam(value = "password", required = false) String password,
@ModelAttribute(Constants.USER_INFO_SESSION)SysUser user,
HttpSession session
Model model) {

SysUser user = userService.validateLogin(username, password);
System.out.println(user.getId());
model.addAttribute(Constants.USER_INFO_SESSION);
return Constants.RESULT_SUCCESS;

}
}

输出:[color=red]11000[/color]

@Controller
@RequestMapping("/User")
@SessionAttributes(Constants.USER_INFO_SESSION)
public class UserControll {

public @ResponseBody List<?> list(
@RequestParam(value = "node", required = false)String node,
@ModelAttribute(Constants.USER_INFO_SESSION)SysUser user,
HttpSession session
) {
System.out.println("user.getId():"+user.getId());
User u = (User)session.getAttribute(Constants.USER_INFO_SESSION);
System.out.println("u.getId():"+u.getId());

输出:
[color=red]user.getId():00
u.getId():00[/color]
session去USER对象id值变成了'00'

发现请求参数中有同名id,值是'00'
@Controller
@RequestMapping("/User")
@SessionAttributes(Constants.USER_INFO_SESSION)
public class UserControll {

public @ResponseBody List<?> list(
@RequestParam(value = "node", required = false)String node,
@RequestParam(value = "id", required = false)String id,
@ModelAttribute(Constants.USER_INFO_SESSION)SysUser user,
HttpSession session
) {
System.out.println("id:" + id);
System.out.println("user.getId():"+user.getId());
User u = (User)session.getAttribute(Constants.USER_INFO_SESSION);
System.out.println("u.getId():"+u.getId());

输出:
[color=red]id:00
user.getId():00
u.getId():00[/color]
请求中参数有同名id,会覆盖session中所有对象同名属性值

改成如下
@Controller
@RequestMapping("/User")
public class UserControll {

public @ResponseBody List<?> list(
@RequestParam(value = "node", required = false)String node,
@RequestParam(value = "id", required = false)String id,
HttpSession session
) {
System.out.println("id:" + id);
User u = (User)session.getAttribute(Constants.USER_INFO_SESSION);
System.out.println("u.getId():"+u.getId());

输出:
[color=red]id:00
u.getId():11000[/color]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值