-
Notifications
You must be signed in to change notification settings - Fork 38.8k
Description
Spring Framework Version: Latest (6.1.13) and below
spring-beans/src/main/java/org/springframework/beans/propertyeditors/ZoneIdEditor.java calls ZoneId.of which throws a java.time.DateTimeException.
But org.springframework.beans.TypeConverterSupport.convertIfNecessary(String, Object, Class<T>, TypeDescriptor) is expecting an IllegalArgumentException.
This manifests in a variety of ways. Best example is in web-mvc assuming a controller with:
@GetMapping("/")
public void get(
@RequestParam(name = "integer", required = false)
int integer,
@RequestParam(name = "zoneId")
ZoneId zoneId) {
}This means a get request of /?integer=helloworld results in a MethodArgumentTypeMismatchException which can easily be bound to 400 response.
However a get request of /?zoneId=helloworld results in a DateTimeException which binds to 500 response.
The integer parameter binding works because it throws NumberFormatException which extends from IllegalArgumentException.