я представить эти данные, чтобы добавить дочерний объект с помощью Ajax (POST):Spring MVC: Как получить BindingResult поля ошибки для вложенного объекта
(см в нижней части этого вопроса для определения классов сущностей)
name = "Child Name"
parent.id = 3
Все в порядке. Новый дочерний объект успешно сохранен.
Но если не включать parent.id
(только name
установлен) (представляемая с помощью метода POST)
name = "Child Name"
Результат проверки возвращают этот JSON:
"errors":{"parent":"may not be null"}
Обратите внимание на недвижимость в "parent"
что JSON. Предполагается вернуть parent.id
не parent
.
Это вызывает проблему, поскольку поле на клиентском скрипте (HTML) имеет имя "parent.id"
не "parent"
.
Любое предложение Как вернуть parent.id
вместо parent
??
Вот метод обработчика:
@RequestMapping(value = "/add", method = RequestMethod.POST)
@ResponseBody
public Map<String, ?> add(@Valid Child child, BindingResult result) {
Map<String, ?> out = new LinkedHashMap<String, ?>();
if(result.hasErrors()){
Map<String, String> errors = new LinkedHashMap<String, String>();
for (FieldError error : result.getFieldErrors()) {
errors.put(error.getField(), error.getDefaultMessage());
}
out.put("success", false);
out.put("errors", errors);
return out;
} else {
out.put("success", true);
}
return out;
}
А вот классы сущностей:
class Child {
private int id;
@NotNull
@Size(min = 5)
private String name;
@NotNull
private Parent parent;
//getter and setter methods
}
class Parent {
private int id;
@NotNull
private String name;
//getter and setter methods
}
Спасибо.
Используйте @Validated аннотацию в контроллере с «группой проверки» http://beanvalidation.org/1.0/spec/#validationapi-validatorapi-groups –