본문 바로가기

카테고리 없음

Controller 에서 WebArgumentResolver 를 구현해 파라메터 사용하는 방법


Spring을 처음 사용하려고 할때 view 에서 요청하는 파라메터를 어떻게 받을지 난감할 때가 있다.
여러가지 방법이 있겠지만 그중에 한가지 방법은 WebArgumentResolver Interface를 구현하여 사용하는 것이다.

1. 특정 클래스를 만든다. 여기서는 예제로 ExtendedMapArgumentResolver 클래스를 생성하고 WebArgumentRes
    olver를 Implements 해준다.

2. Object 타입의 resolveArgument를 구현해 준다.

@Override
 public Object resolveArgument(MethodParameter methodParameter, NativeWebRequest webRequest) throws Exception {
 Class<?> clazz = methodParameter.getParameterType();
  
  if (clazz.equals(ExtendedMap.class) ) {
   HttpServletRequest request = (HttpServletRequest) webRequest.getNativeRequest();
   ExtendedMap params = new DataMap();
   params.addAll(request.getParameterMap());
   
   return params;
  }
  return UNRESOLVED; 
 }

메소드 파라메터 정보와 웹 요청정보를 받아서 파라메터 타입과 어노테이션을 참고해서 오브젝트를 생성할 수 있으면 이를 리턴하고 그게 아니라면 UNRESOLVED를 리턴해주면 된다.