2011-03-23 3 views
2

이미 JacksonMapper로 채워진 개체를 수정하고 IP 및 리퍼러 URL을 자동으로 추가하려고하지만 요청에 속성이 없기 때문에 요청은 항상 null입니다. 정렬. 내가 뭔가 잘못하고 있는거야? RequestBody에 대응하는 오브젝트가 바로 전에 생성 방법컨트롤러에서 @RequestBody 개체를 필터에서 수정하십시오.

<filter> 
    <filter-name>apiFilter</filter-name> 
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> 
</filter> 

<filter-mapping> 
    <filter-name>apiFilter</filter-name> 
    <url-pattern>/api/*</url-pattern> 
</filter-mapping> 
+0

는 어디 필터는 인스턴스화되고있다? 속성을 얻을 수 없다고 말하면 클라이언트 측에서 의미합니까? 내가 그 개체의 IP 및 참조를 가질 수 있도록이 컨트롤러로 이동하기 전에 –

+0

나는, 요청 필터 내부 @RequestBody FollowRequest 요청을 수정할. 필터는 위에서 추가 한 web.xml에서 인스턴스화됩니다. –

답변

1

ApiController.java

@RequestMapping(value="/member/follow") 
    public @ResponseBody IHttpResponse follow(@RequestBody FollowRequest request) { 
     return request.getHttpResponse(); 
    } 

ApiRequestWrapper.js

public class ApiRequestWrapper extends HttpServletRequestWrapper 
{ 
    public ApiRequestWrapper(HttpServletRequest request) { 
     super(request); 

     if(this.getAttribute("request") instanceof IHttpRequest) 
     { 
      IHttpRequest httpRequest = (IHttpRequest) this.getAttribute("request"); 

      if(httpRequest != null) 
      { 
       httpRequest.setIp(request.getRemoteAddr()); 
       httpRequest.setReferrer(request.getLocalName()); 
      } 
     } 
    } 
} 

web.xml 파일 호출 - 거기 그것을 필터에서 잡아낼 방법이 없습니다. Aspect를 구현하여 원하는 것을 달성 할 수 있습니다.

+0

우물 안됐다. –

관련 문제