| 12345678910111213141516171819202122232425262728293031323334353637383940 |
- package com.ydtech.aop;
- import com.alibaba.fastjson.JSON;
- import com.alibaba.fastjson.JSONObject;
- import com.ydtech.aop.request.RequestSingleParam;
- import org.springframework.core.MethodParameter;
- import org.springframework.web.bind.support.WebDataBinderFactory;
- import org.springframework.web.context.request.NativeWebRequest;
- import org.springframework.web.method.support.HandlerMethodArgumentResolver;
- import org.springframework.web.method.support.ModelAndViewContainer;
- import javax.servlet.http.HttpServletRequest;
- import java.io.BufferedReader;
- public class RequestStringParamHandlerMethodArgumentResolver implements HandlerMethodArgumentResolver {
- @Override
- public boolean supportsParameter(MethodParameter methodParameter) {
- return methodParameter.hasParameterAnnotation(RequestSingleParam.class);
- }
- @Override
- public Object resolveArgument(MethodParameter methodParameter, ModelAndViewContainer modelAndViewContainer, NativeWebRequest nativeWebRequest, WebDataBinderFactory webDataBinderFactory) throws Exception {
- RequestSingleParam requestSingleParam = methodParameter.getParameterAnnotation(RequestSingleParam.class);
- HttpServletRequest request = nativeWebRequest.getNativeRequest(HttpServletRequest.class);
- assert request != null;
- BufferedReader reader = request.getReader();
- StringBuilder sb = new StringBuilder();
- char[] buf = new char[1024];
- int rd;
- while ((rd = reader.read(buf)) != -1) {
- sb.append(buf, 0, rd);
- }
- String value = requestSingleParam.value();
- JSONObject jsonObject = JSON.parseObject(sb.toString());
- return jsonObject.get(value);
- }
- }
|