Description
Graham Cox opened SPR-11829 and commented
Java 8 adds the new java.util.Optional type to represent values that might or might not have a value. I've just tried using this as a controller parameter that is annotated with @RequestParam
and it unfortunately doesn't work.
If the request parameter is missing then the method parameter comes through as null, and if it is present then Spring throws an java.lang.IllegalStateException: Cannot convert value of type [java.lang.String] to required type [java.util.Optional]: no matching editors or conversion strategy found.
It would be very useful if these came through as either Optional.EMPTY or Optional.of(param). I am currently doing this right at the top of my controller methods - essentially I'm wrapping the values in Optional.ofNullable() - but if Spring did this automatically that would be fantastic.
Affects: 4.0.5
Issue Links:
- INT-3516 Support JDK8 Optional<?> When Binding Messages to Service Methods
- Support for java.util.Optional with @Inject (a la @Autowired's required=false) [SPR-11833] #16452 Support for java.util.Optional with
@Inject
(a la@Autowired
's required=false) - Support for java.util.Optional as a @RequestPart [SPR-12644] #17245 Support for java.util.Optional as a
@RequestPart
- Request parameters cannot bind to Optional<List<String>> [SPR-13418] #17997 Request parameters cannot bind to Optional<List>
- Support for java.util.Optional as a @RequestBody [SPR-15007] #19574 Support for java.util.Optional as a
@RequestBody
Referenced from: commits 0dc6082