0 day streak
java / expert
Snippet

Custom HandlerMethodArgumentResolver for Typed Request Header Arrays

Custom `HandlerMethodArgumentResolver` implementations allow Spring MVC applications to automatically parse raw HTTP request parameters or headers into complex Java data structures, such as transforming comma-separated values directly into typed Java `String[]` arrays before hitting controller methods.

snippet.java
java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class StringArrayHeaderResolver implements HandlerMethodArgumentResolver {
@Override
public boolean supportsParameter(MethodParameter parameter) {
return parameter.hasParameterAnnotation(CsvHeaderArray.class) &&
parameter.getParameterType().equals(String[].class);
}
@Override
public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer,
NativeWebRequest webRequest, WebDataBinderFactory binderFactory) {
String headerValue = webRequest.getHeader(parameter.getParameterAnnotation(CsvHeaderArray.class).value());
return headerValue != null ? headerValue.split("\\s*,\\s*") : new String[0];
}
}
spring
Breakdown
1
public class StringArrayHeaderResolver implements HandlerMethodArgumentResolver
Implements the Spring MVC SPI contract for resolving custom controller method arguments.
2
parameter.hasParameterAnnotation(CsvHeaderArray.class) && parameter.getParameterType().equals(String[].class)
Checks if target method parameter targets the custom annotation and expects a String array.
3
String headerValue = webRequest.getHeader(parameter.getParameterAnnotation(CsvHeaderArray.class).value());
Retrieves raw header string value from the incoming web request context.
4
return headerValue != null ? headerValue.split("\\s*,\\s*") : new String[0];
Splits CSV string into a clean String array using regex, returning an empty array on null values.