通过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";
}
}