Spring之Controller使用篇1模型自动装配对象或集合
一、Controller之使用策略
@RequestMapping的使用十分重要,这个注解即可以放在方法上,不用显式声明提交方式,比如像这样:
@RequestMapping("/spittles") public List<Spittle> spittles(@RequestParam(value = "max", defaultValue = MAX_LONG_AS_STRING) long max, @RequestParam(value = "count", defaultValue = "20") int count) { System.out.println("spittleswdc"); return spittleMapper.findSpittles(max, count); }
这个注解另有做法,也是本人最喜欢的做法是,在类和方法上同时加入此注解,比如像这样:
1 @RequestMapping("/spittles") 2 public class SpittleController { 3 4 @RequestMapping(method = RequestMethod.GET) 5 public List<Spittle> spittles(@RequestParam(value = "max", defaultValue = MAX_LONG_AS_STRING) long max, 6 @RequestParam(value = "count", defaultValue = "20") int count) { 7 return spittleMapper.findSpittles(max, count); 8 }
这样做的好处,就是前台提交时不用写路径,默认提交到本页面。
关于返回视图名称上面代码是一种受限制但是非常好用的返回方案,他并没有返回视图名称"spittles",也没有使用Model模型添加List,
这地方Spring实现了下面这种方式:
1 /* 2 * Spring4.0以后,像下面这这种方法也是可以的,它没有返回视图名称,也没有显式设定模型(Model),这个方法返回的是Spittle列表。 3 * 当处理器方法像这样返回对象或者集合时,这个值会放在模型中,模型的key会根据其数据类型判断得出(在本例中,List<Spittle>)spittleList。 4 * 而逻辑视图的名称会根据请求路径的推断得出,因为这个方法处理针对/Spittles的get请求,因此视图的名称将会是spittles。 5 * 当然你也可以用ModelAndView把List加进来。 6 */ 7 8 @RequestMapping(method = RequestMethod.GET) 9 public List<Spittle> spittles(@RequestParam(value = "max", defaultValue = MAX_LONG_AS_STRING) long max, 10 @RequestParam(value = "count", defaultValue = "20") int count) { 11 System.out.println("spittleswdc"); 12 return spittleMapper.findSpittles(max, count); 13 }