- Notifications
You must be signed in to change notification settings - Fork38.6k
Description
Spring Framework Version: Latest (6.1.13) and below
spring-beans/src/main/java/org/springframework/beans/propertyeditors/ZoneIdEditor.java
callsZoneId.of
which throws ajava.time.DateTimeException
.
Butorg.springframework.beans.TypeConverterSupport.convertIfNecessary(String, Object, Class<T>, TypeDescriptor)
is expecting anIllegalArgumentException
.
This manifests in a variety of ways. Best example is inweb-mvc
assuming a controller with:
@GetMapping("/")publicvoidget(@RequestParam(name ="integer",required =false)intinteger,@RequestParam(name ="zoneId")ZoneIdzoneId) { }
This means aget
request of/?integer=helloworld
results in aMethodArgumentTypeMismatchException
which can easily be bound to 400 response.
However aget
request of/?zoneId=helloworld
results in aDateTimeException
which binds to 500 response.
The integer parameter binding works because it throwsNumberFormatException
which extends fromIllegalArgumentException
.