我有一个简单的类Foo,就像这个:
public class Foo {
@NotNull
private String bar;
public String getBar(){ return bar; }
public void setBar(String _bar){ this.bar = _bar; }
}
现在,我有一个控制器REST方法,需要传递一个Foo的数组(或集合),我想确保每个Foo都有一个非空的bar属性。我认为使用@Valid注释可以解决问题,但似乎不行:
@Controller
public class MyController {
@RequestMapping(value="/foos", method=RequestMethod.POST)
public @ResponseBody String createFoos(@Valid @RequestBody Foo[] foos){
// blah blah blah
return "yeah";
}
}
注意:它也不适用于List<Foo>。但是对于唯一的Foo,它可以工作!
看起来Spring验证在有“多个”对象(在集合或数组中)时不起作用。
我甚至尝试使用自定义注释实现HandlerMethodArgumentResolver,但我不知道如何在BindingResult中定义“索引属性名称”。
如果有人知道此问题的解决方法,将不胜感激! :)