一日三省吾身

博客园 首页 联系 订阅 管理

数据模型访问结构

 

通过ModelAndView访问数据模型

@RequestMapping(method = RequestMethod.POST)

public ModelAndViewcreateUser(User user) {

  userService.createUser(user);

  ModelAndView mav= new ModelAndView();

  mav.setViewName("user/createSuccess");

  mav.addObject("user", user);

  return mav;

}

访问数据模型:@ModelAttribute

 

访问数据模型:Map及Model  org.springframework.ui.Model和java.util.Map:

@RequestMapping(value = "/handle63")

public String handle63(ModelMap modelMap){

  modelMap.addAttribute("testAttr","value1");

  User user = (User)modelMap.get("user");

  user.setUserName("tom");

  return "/user/showUser";

}

Spring MVC一旦发现处理方法有Map或Model类型的入参,就会将请求内在的隐含模型对象的引用传给这些入参。

访问数据模型:@SessionAttributes

 如果希望在多个请求之间共用某个模型属性数据,则可以在控制器类标注一个@SessionAttributes,Spring MVC会将模型中对应的属性暂存到HttpSession中:

对入参标注@ModelAttribute(“xxx”)的处理方法,Spring MVC按如下流程处理(handle71(@ModelAttribute(“user”) User user)):
1.如果隐含模型拥有名为xxx的属性,将其赋给该入参,再用请求消息填充该入参对象直接返回,否则到2步。
2.如果xxx是会话属性,即在处理类定义处标注了@SessionAttributes("xxx"),则尝试从会话中获取该属性,并将其赋给该入参,然后再用请求消息填充该入参对象。如果在会话中找不到对应的属性,则抛出HttpSessionRequiredException异常。否则到3。
3.如果隐含模型不存在xxx属性,且xxx也不是会话属性,则创建入参的对象实例,再用请求消息填充该入参。

避免抛出HttpSessionRequiredException异常?

 

posted on 2016-11-11 14:51  一日三省吾身  阅读(243)  评论(0编辑  收藏  举报