Spring MVC: как проверить свойство вложенных бинов с помощью Ajax - PullRequest
1 голос
/ 25 января 2012

Предположим, что у меня есть эти классы:

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"}}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...