我有一个端点是:
api/entities/{year}
我的函数是这样的:
get(@PathVariable(name = "year") Year year)
但是,当我尝试到达终点时,我预计会收到无法从 String 类型转换为 Year 类型的错误。我显然需要类似 @DateTypeFormat 的东西,但这实际上不起作用。
有没有办法将传入值的格式设置为年份,或者我是否应该修改我的 API 以不使用年份?
最佳答案
你可以这样做:
public class YearHandlerMethodArgumentResolver implements HandlerMethodArgumentResolver {
@Override
public boolean supportsParameter(MethodParameter methodParameter) {
return methodParameter.getParameterType().equals(Year.class);
}
@Override
public Object resolveArgument(MethodParameter methodParameter,
ModelAndViewContainer modelAndViewContainer,
NativeWebRequest nativeWebRequest,
WebDataBinderFactory webDataBinderFactory) throws Exception {
final String yearFromPath = nativeWebRequest.xxx();
return Year.from(yearFromPath);
}
}
然后 在你的 spring-context 中注册它
关于java - Spring @PathVariable 作为一年,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49859241/