У меня есть следующий обработчик отображения:
@Controller
@RequestMapping("/product")
public class ProductController {
@RequestMapping(value = "update", method = RequestMethod.POST)
@ResponseBody
public Map<String, ?> update(@Valid @RequestBody ListOfProduct productList) {
if (productDao.saveOrUpdateAll(productList)) {
return jsonUtils.statusMessage(true, "Updated successfully.");
}
return jsonUtils.statusMessage(false, "Failed.");
}
@ExceptionHandler
@ResponseStatus(value = HttpStatus.BAD_REQUEST)
@ResponseBody
public String handleMethodArgumentNotValidException(MethodArgumentNotValidException error) {
return "Bad request: " + error.getMessage();
}
public static class ListOfProduct extends ArrayList<Product> {
private static final long serialVersionUID = 1L;
public ListOfProduct() {
super();
}
}
}
@Entity
public class Product implements Serializable {
private static final long serialVersionUID = 1L;
@Min(1)
private int id;
@NotNull
@Size(min = 5)
private String name;
public product() {
}
// getters and setters
}
Я пытаюсь проверить этот JSON:
[{"id":6, "name":""}]
Предполагается, что это нарушение для ограничения @Size of "name "property.
И он должен обрабатываться handleMethodArgumentNotValidException () внутри контроллера.
Но вместо этого я получил это исключение:
Jan 21, 2012 10:25:00 AM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [appServlet] in context with path [/WebTest] threw exception [Request processing failed; nested exception is javax.validation.ConstraintViolationException: Validation failed for classes [com.tes.web.entity.Product] during update time for groups [javax.validation.groups.Default, ]
List of constraint violations:[
ConstraintViolationImpl{interpolatedMessage='size must be between 5 and 2147483647', propertyPath=name, rootBeanClass=class com.tes.web.entity.Product, messageTemplate='{javax.validation.constraints.Size.message}'}
]] with root cause
javax.validation.ConstraintViolationException: Validation failed for classes [com.tes.web.entity.Product] during update time for groups [javax.validation.groups.Default, ]
List of constraint violations:[
ConstraintViolationImpl{interpolatedMessage='size must be between 5 and 2147483647', propertyPath=name, rootBeanClass=class com.tes.web.entity.Product, messageTemplate='{javax.validation.constraints.Size.message}'}
]
Любое предложение, как решить эту проблему?
Большое спасибо.