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);
}
}
});
}