Spring настраивает отображение для вложенных форм-объектов

У меня есть следующие классы

public class RequestResponseWrapper {

    MyDto myDto;

}

public class MyDto {

    private String field1;
    private String field2;
    ....
}

и у меня есть следующий метод контроллера:

@RequestMapping(...)
@ResponseStatus(HttpStatus.NO_CONTENT)
@ResponseBody
public RequestResponseWrapper putData(@ModelAttribute RequestResponseWrapper requestResponseWrapper) {
        ....
}

Я написал следующее переплет:

@InitBinder("requestResponseWrapper")
    public void initBinder(WebDataBinder binder) {
        binder.registerCustomEditor(MyDto.class, new PropertyEditorSupport() {

            public void setAsText(String name) {
                setValue(StringUtils.isNotBlank(name) ? name : null);
            }
        });
}

Теперь, если я получил пустой объект от клиента, он преобразуется в следующую структуру:

requestResponseWrapper--
                        myDto--
                               field1 = null
                               field2 = null
                               ....

Ожидаемый результат:

requestResponseWrapper--
                        myDto = null

Как изменить мой код?

1 ответ

Вы не должны устанавливать значение в нуль, если его ноль. Просто установите желаемое значение (имя), когда ваше значение не равно нулю. Я надеюсь это имеет смысл.

    @InitBinder("requestResponseWrapper")
    public void initBinder(WebDataBinder binder) {
            binder.registerCustomEditor(MyDto.class, new PropertyEditorSupport() {

                    public void setAsText(String name) {
                            if (StringUtils.isNotBlank(name)) {
                                    setValue(name);
                            }

                    }
            });
    }
Другие вопросы по тегам