2011-03-23 81 views
2

我想修改一個已經用JacksonMapper填充的對象,並自動添加IP和引用URL到它,但請求始終爲空,因爲它在屬性中找不到陣列。難道我做錯了什麼?修改控制器中的@RequestBody對象從過濾器

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中

<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

過濾器在哪裏被實例化?當你說你無法獲得這些屬性時,你的意思是在客戶端? – 2011-03-23 05:07:27

+0

我想修改請求過濾器中的@RequestBody FollowRequest請求,然後它進入控制器,這樣我可以在該對象中擁有IP和引用。過濾器在我上面添加的web.xml中實例化。 – 2011-03-23 15:57:12

回答

1

對應於RequestBody該目的只是該方法之前創建的調用 - 有沒有辦法在過濾器中保留它。你可以通過實施一個方面來實現你想做的事情。

+0

那麼糟透了。 – 2011-03-23 17:12:38