springboot重写SpringMVC请求参数装载
2018-02-02 11:11
1631 查看
详细原理解析参考恒宇少年:https://segmentfault.com/a/1190000011406515
本文只做将请求参数名转下换线的实现,数据装载的实现使用反射,让代码更为简练。
1.使用自定义注解:
2.实现HandlerMethodArgumentResolver接口:
3.使用:
本文只做将请求参数名转下换线的实现,数据装载的实现使用反射,让代码更为简练。
1.使用自定义注解:
/** * 实体映射注解 * 配置该注解的参数会使用UnderlineToCamelArgumentResolver类完成装载 */ @Target(value = ElementType.PARAMETER) @Retention(RetentionPolicy.RUNTIME) public @interface ParameterModel { }
2.实现HandlerMethodArgumentResolver接口:
/** * 将请求参数带有下划线转驼峰命名 */ public class UnderlineToCamelArgumentResolver implements HandlerMethodArgumentResolver { @Override public boolean supportsParameter(MethodParameter methodParameter) { return methodParameter.hasParameterAnnotation(ParameterModel.class); } @Override public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer container, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception { return handleParameterNames(parameter, webRequest); } private Object handleParameterNames(MethodParameter parameter, NativeWebRequest webRequest) { Object obj = BeanUtils.instantiate(parameter.getParameterType()); BeanWrapper wrapper = PropertyAccessorFactory.forBeanPropertyAccess(obj); Iterator<String> paramNames = webRequest.getParameterNames(); while (paramNames.hasNext()) { String paramName = paramNames.next(); Object o = webRequest.getParameter(paramName); wrapper.setPropertyValue(underLineToCamel(paramName), o); } return obj; } private String underLineToCamel(String source) { Matcher matcher = Pattern.compile("_(\\w)").matcher(source); StringBuffer sb = new StringBuffer(); while (matcher.find()) { matcher.appendReplacement(sb, matcher.group(1).toUpperCase()); } matcher.appendTail(sb); return sb.toString(); } }
3.使用:
相关文章推荐
- SpringMVC或SpringBoot请求时间参数报错处理方法
- 关于springboot的RestFul的PUT请求,前台参数接收问题
- springMVC(spring)+WebSocket案例(获取请求参数)
- springboot Filter 截取 restful 的请求参数
- spring boot 加入jsp自定义标签对get请求参数加密
- SpringBoot设置Filter过滤请求参数
- [转载]SpringBoot系列: SpringMVC 参数绑定注解解析
- Spring Boot AOP之对请求的参数入参与返回结果进行拦截处理
- SpringBoot设置Filter过滤请求参数
- Spring Boot中请求参数获取
- SpringBoot入坑-请求参数传递
- Spring boot PUT、DELETE 请求无法定位方法及获取参数解决方案
- Spring Boot 拦截器 请求参数MD5签名校验
- springBoot PUT请求接收不了参数的解决办法
- spring boot 自定义请求参数解析注解
- SpringMVC Spring3 MVC 注解,注释 用@RequestMapping处理请求,多个请求,提交,.do,带参数,url重写
- springboot获取URL请求参数的几种方法
- springmvc(基础五) Spring3 mvc 获取请求参数的几种方式
- SpringMVC Spring3 MVC 注解,注释 用@RequestMapping处理请求,多个请求,提交,.do,带参数,url重写
- Kotlin + Spring Boot 请求参数验证