SpringMVC(四)

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

}

 

猜你喜欢

转载自llyilo.iteye.com/blog/2366430