@RestController public class TestController { @PostMapping("/test") public void test(TestFilter test) { System.out.println(test.id != null); //true System.out.println(test.origin == null); //false System.out.println(test.destination == null); //false } } public class TestFilter { public String id; public String origin; public String destination; }
When I run the following request, the values in my received object are not null
, but ""
empty:
curl --location --request POST 'localhost:8080/test' --header 'Content-Type: application/x-www-form-urlencoded' --data-urlencode 'id=1' --data-urlencode 'origin=' --data-urlencode 'destination='
Question: how can I tell Spring
to not add empty values on Strings, but keep them null
?
Advertisement
Answer
Could solve it as follows:
@ControllerAdvice public class StringTrimAdvice { @InitBinder public void initBinder(WebDataBinder binder) { binder.registerCustomEditor(String.class, new StringTrimmerEditor(true)); } }
This converts any empty strings to nulls.