页面:
jsp: <input type="text" name="username" />
<input type="text" name="password" />
action: public ModelAndView (.., .., User user ){} 对象User{ username,password}
二: 页面传值 支持 对象图导航式 传值
jsp: <input type="text" name="userExt.userAge" /> 对象User{username,password,userExt}
对象 UserExt{ userAge,List<String> likes}
action: public ModelAndView (.., .., User user ){} userExt.userAge 会传入到user中
多个同名参数 可用List 来接收参数
三:关于model 接收展示的一个点
如果model中的对象属性名相同,最终以ModelAndView中的添加属性为最终覆盖
四:@ModelAttribute()
1、可以接收页面数据
2、可以初始化页面展示的数据模型:
@ModelAttribute("cityList")
public List<String> cityList() {
return Arrays.asList("北京", "山东");
}
如上代码会在执行功能处理方法之前执行,并将其自动添加到模型对象中,
在功能处理方法中调用Model 入参的 containsAttribute("cityList")将会返回true
3、可以注解返回的命令对象别名
public @ModelAttribute("user2") UserModel test3(@ModelAttribute("user2") UserModel user)
返回值的model名称会覆盖 参数中的model名称
4、匿名绑定参数
public String test4(@ModelAttribute UserModel user, Model model) 或
public String test5(UserModel user, Model model)
匿名返回model 时 UserModel 默认为userModel
public @ModelAttribute List<String> test6() 或
public @ModelAttribute List<UserModel> test7()
对于集合类型(Collection接口的实现者们,包括数组),生成的模型对象属性名为“简单类名(首字母小写)”+“List”,
如List<String>生成的模型对象属性名为“stringList”,List<UserModel>生成的模型对象属性名为“userModelList”
五: 关于model 中存储的List/Map 类型的数据 的展现方式
public String showUsers(ModelMap model){
model.addAttribute("list" users);
}
页面中直接用El的方式拿值即可,${requestScope.list[0]}
六:关于绑定在session 的数据
@SessionAttributes(value = {"user"}) //①
public class SessionAttributeController{
@ModelAttribute("user") //②
public UserModel initUser()
}
@SessionAttributes(value = {"user"}) 标识将2中的user 保存到 session 中