我正在尝试验证bean的集合,它看起来如下,
public class Employee{
@NotNull(message = "The name parameter is mandatory")
@NotEmpty(message = "Please provide a valid value for name parameter")
protected String name;
protected String address;
protected String phone;
//getters and setters
}
public class Employees{
@NotNull(message = "The town parameter is mandatory")
@Valid
protected List<Employee> employees;
//getters and setters
}
@RequestMapping(value = "/addEmployees", method = RequestMethod.POST, headers = "Accept=application/json")
public String addEmployees(
@Valid @RequestBody Employees employees, BindingResult result){
if(result.hasErrors){
List<ObjectError> errors = result.getAllErrors();
for (ObjectError error : errors) {
System.out.println(error.getDefaultMessage());
}
}
//business logic
}
请求:
{
"employees":[
{
"name":"John",
"address":"New York",
"phone":"12312123"
},
{
"name":"Scott",
"address":"New Jersey",
"phone":"12312123"
}
]
}
要求是针对上述请求,它应该将employees集合中每个Employee的验证错误记录到BindingResult。 因此,如果请求中不存在名称,则应打印 “name参数是必需的。”
答案 0 :(得分:0)
暂时添加此作为答案:
最有可能的是,您尚未初始化验证器。在spring spring MVC spring配置文件中,添加以下内容:
<bean id="validator"
class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"/>
spring docs中解释了这一点。