1.添加注解方法
public @interface TestAnnotation {
......
}
2、继承HandlerMethodArgumentResolver接口,
public class TestArgumentResolver implements HandlerMethodArgumentResolver {
@Override
public boolean supportsParameter(MethodParameter parameter) {
return parameter.hasParameterAnnotation( TestAnnotation.class);
}
@Override
public Object resolveArgument(MethodParameter parameter,
ModelAndViewContainer mavContainer, NativeWebRequest webRequest,
WebDataBinderFactory binderFactory) throws Exception {
return resolveArgument(parameter, webRequest);
}
private Object resolveArgument(MethodParameter parameter,NativeWebRequest webRequest) throws Exception {
Object object = BeanUtils.instantiate(parameter.getParameterType());
...//详细参数修改过程
for (Field field : fields) {
field.setAccessible(true);
String name = field.getName();
String value = webRequest.getParameter(name);
boolean isExisted= field
.isAnnotationPresent(TestAnnotation.class);
if (StringUtils.isNotBlank(value)) {
if (isExisted) {
String result = ... //修改后结果
field.set(object, result);
} else {
field.set(object, value);
}
}
}
return object;
}
}
3.加入mvc:argument-resolvers中
<mvc:annotation-driven>
<mvc:message-converters register-defaults="true">
<!-- 将StringHttpMessageConverter的默认编码设为UTF-8 -->
<!-- <bean class="org.springframework.http.converter.StringHttpMessageConverter">
<constructor-arg value="UTF-8" />
</bean> -->
<bean class = "org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes" value = "text/plain;charset=UTF-8" />
</bean>
<!-- 将Jackson2HttpMessageConverter的默认格式化输出设为true -->
<bean
class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="prettyPrint" value="true" />
</bean>
</mvc:message-converters>
<mvc:argument-resolvers>
<bean class="****.TestArgumentResolver"></bean>
</mvc:argument-resolvers>
</mvc:annotation-driven>