三.五 绑定List 集合对象
与数组接收基本是一致的。
1 . 后台接收处理
@RequestMapping(value="/register") public String register(User user,@RequestParam(value="hobby",required=false) List<String> hobby){ System.out.println("接收的对象:"+user.toString()); System.out.println("爱好是:"+Arrays.toString(hobby.toArray(new String[]{}))); return "user/list"; }
2 . 后台显示处理
前端多传入 一个 读书 (老蝴蝶不要脸一次) 的选项。
当然,也是可以将集合放置在User 对象里面的。
3 . 在User 对象中添加一个 List 集合属性,实现setter和getter方法。
private List<String> hobby; public List<String> getHobby() { return hobby; } public void setHobby(List<String> hobby) { this.hobby = hobby; }
4 . 后端控制台接收
@RequestMapping(value="/register") public String register(User user){ System.out.println("接收的对象:"+user.toString()); List<String> hobby=user.getHobby(); System.out.println("对象接收List爱好是:"+Arrays.toString(hobby.toArray(new String[]{}))); return "user/list"; }
5 .前端传入数据
6 . 后端控制台打印输出
三.六 绑定Map 对象。
将前台传入的值,当成一个Map传入进去。 继续接着上面的前端代码往下写。
前端代码:
职业1: <input type="text" name="love1" value=""> <br/> 职业2: <input type="text" name="love2" value=""><br/> 职业3: <input type="text" name="love3" value=""><br/>
2 . 后端接收。
@RequestMapping(value="/register") public String register(User user,@RequestParam Map<String,String> map){ //此时,requestParam注解里面不能写任何值。 System.out.println("接收的对象:"+user.toString()); for(Map.Entry<String,String> entry:map.entrySet()){ System.out.print("输出值:"+entry.getKey()); System.out.print(",输出值:"+entry.getValue()); System.out.println("\n"); } return "user/list"; }
3 . 前端数据写入
4 . 控制台打印输出
会发现,把所有的请求参数都放置在了Map 里面。 如果想,仅仅把 参数为love1,love2,love3的放置进去呢?
5 .将集合Map属性 写入到User 类中,并实现setter和getter方法。
private Map<String,String> loveMap; public Map<String, String> getLoveMap() { return loveMap; } public void setLoveMap(Map<String, String> loveMap) { this.loveMap = loveMap; }
6 . 前台代码。 注意,这个时候有一个变化了。
<!--name便为属性.key值--> 职业1: <input type="text" name="loveMap['love1']" value=""> <br/> 职业2: <input type="text" name="loveMap['love2']" value=""><br/> 职业3: <input type="text" name="loveMap['love3']" value=""><br/>
7 .后端代码接收
@RequestMapping(value="/register") public String register(User user){ System.out.println("接收的对象:"+user.toString()); Map<String,String> loveMap=user.getLoveMap(); for(Map.Entry<String,String> entry:loveMap.entrySet()){ System.out.print("输出值:"+entry.getKey()); System.out.print(",输出值:"+entry.getValue()); System.out.println("\n"); } return "user/list"; }
8 .前台传入数据
9 . 后端控制台打印输出
可知,前端仅love1,love2,love3放置在了Map集合里面。
所以,最好把前端的数据放置在对象里面,便于接收。 当然,实际开发中,并不能改变User类,而应该添加一个User类的扩展 UserVo 类,在UserVo 类中添加扩展的属性。
谢谢!!!