通过ModelAndView 访问
@RequestMapping(value="/index") public ModelAndView index(User user){ user.setAge("A"); user.setSex("B"); // ModelAndView mav = new ModelAndView(); // mav.setViewName("message"); // 不需要加扩展名 ModelAndView mav = new ModelAndView("message"); mav.addObject(user); return mav; }
访问数据模型@ModelAttribute
使用方式一
@RequestMapping(value="/index") public String index(){ return "message"; } @ModelAttribute public void populateModel(@RequestParam String age,@RequestParam String sex,Model model){ model.addAttribute("str", "modelAttribute ==== > " + age + " :" + sex); }
当URL访问index方法时,会在之前掉用populateModel这个方法,执行完成后,再执行index()
方式二(返回对象)
@RequestMapping(value="/index") public String index(){ return "message"; } @ModelAttribute public User populateModel(){ User user = new User(); user.setAge("10"); return user; }
model名称无需要指定,它由返回类型隐含表示,如这个方法返回User类型,那么这个model属性的名称是user。
@ModelAttribute(value="myUser") public User populateModel(){ User user = new User(); user.setAge("10"); return user; }
也可指定返回名称,指定后,返回的对象名称是myUser,不指定,则返回User.
使用方式三(合并对象进行返回)
@RequestMapping(value="/index") public String index(User user){ user.setSex("男"); return "message"; } @ModelAttribute public User populateModel(){ User user = new User(); user.setAge("10"); return user; }
使用方式四(对象合并指定对象名称)
@RequestMapping(value="/index") public String index(@ModelAttribute("myUser")User user){ user.setSex("男"); return "message"; } @ModelAttribute(value="myUser") public User populateModel(){ User user = new User(); user.setAge("10"); return user; }
public String test(@ModelAttribute("user") UserModel user)
此处多了一个注解@ModelAttribute("user"),它的作用是将该绑定的命令对象以“user”为名称添加到模型对象中供视图页面展示使用。我们此时可以在视图页面使用${user.username}来获取绑定的命令对象的属性。
@SessionAttributes注解
@Controller @SessionAttributes("myUser") // 把对象myUser自动保存到session中 public class TController { @RequestMapping(value="/index") public String index(@ModelAttribute("myUser")User user){ user.setSex("男"); return "message"; } @ModelAttribute(value="myUser") public User populateModel(){ User user = new User(); user.setAge("10"); return user; } @RequestMapping(value="/out") public String out(@ModelAttribute("myUser")User user,SessionStatus sessionStatus){ user.setSex("男"); sessionStatus.setComplete(); // 清除本处理器对应的会话属性 return "message"; } }