I have the following classes
public class RequestResponseWrapper {
MyDto myDto;
}
public class MyDto {
private String field1;
private String field2;
....
}
and I have the following controller method:
@RequestMapping(...)
@ResponseStatus(HttpStatus.NO_CONTENT)
@ResponseBody
public RequestResponseWrapper putData(@ModelAttribute RequestResponseWrapper requestResponseWrapper) {
....
}
I wrote following binder:
@InitBinder("requestResponseWrapper")
public void initBinder(WebDataBinder binder) {
binder.registerCustomEditor(MyDto.class, new PropertyEditorSupport() {
public void setAsText(String name) {
setValue(StringUtils.isNotBlank(name) ? name : null);
}
});
}
Now If I got empty object from client it converts to the following structure:
requestResponseWrapper--
myDto--
field1 = null
field2 = null
....
Expected result:
requestResponseWrapper--
myDto = null
How to change my code ?
You should not set the value to null if its null. Just set it to the value you want (name) when your value is not null. I hope this makes sense.