Предположим, что у меня есть эти классы:
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
}
Вот метод обработки:
@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;
}
Если я отправляю эти данные, чтобы добавить ребенка через Ajax (POST):
name = testtesttest
parent.id = 3
Все в порядке.Новый дочерний элемент успешно сохранен.
Но если не включить parent.id
(установлено только name
)
name = testtesttest
Результат проверки возвращает это:
"errors":{"parent":"may not be null"}
Обратите внимание на свойство "parent"
в этом JSON.Он должен возвращать parent.id
, а не parent
.
Это вызывает проблему, поскольку поле в скрипте на стороне клиента (HTML) имеет имя parent.id
, а не parent
.
Любоепредложение Как решить эту проблему ??
Спасибо.
ПРИМЕЧАНИЕ: Если я изменю представленные данные на это:
name = testtesttest
parent = 3
Я получилдругая ошибка:
{"success":false,"errors":{"parent":"Failed to convert property value of type 'java.lang.String' to required type 'com.test.entity.Parent' for property 'parent'; nested exception is java.lang.IllegalStateException: Cannot convert value of type [java.lang.String] to required type [com.test.entity.Parent] for property 'parent': no matching editors or conversion strategy found"}}