2016-06-09 72 views
1

我從Spring 3.2升級到4.1並試圖更新我的MVC配置。Spring-MVC 3.2到4.1升級:@RequestParam不綁定

短版:我可以證實,該請求發送帕拉姆:

userId:USERNAME 
password:PASSWORD 
termsAccepted:true 

內容類型是application/x-www-form-urlencoded

春季安全CSRF被禁用:<security:csrf disabled="true"/>

在XSD看,它說我的自定義方法的參數解析器不要替代默認的值:

<mvc:annotation-driven > 
    <mvc:argument-resolvers> 
     <bean class="org.jason.web.util.RetainUserHandlerMethodArgumentResolver"/> 
     <bean class="org.jason.web.util.ConversationArgumentResolver"/> 
    </mvc:argument-resolvers> 
    <mvc:message-converters> 
     <bean class="org.springframework.http.converter.FormHttpMessageConverter"/> 
     <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/> 
    </mvc:message-converters> 
</mvc:annotation-driven> 

任何人都可以提供任何見解?

編輯:這是控制器。沒什麼特別的。

@RequestMapping(value = "/login**") 
public ModelAndView login(@RequestParam(value = "error", required = false) String error, 
         @RequestParam(value = "logout", required = false) String logout, 
         @RequestParam(value = "submit", required = false) String submit, 
         @RequestParam(value = "userId", required = false) String userId, 
         @RequestParam(value = "password", required = false) String password, 
         @RequestParam(value = "returnView", required = false) String returnView, 
         HttpServletRequest request, 
         HttpSession session 
    ) { 
    // login log. Return a Spring ModelAndView based on success/failure. 
} 
+0

您是否擴展了正確的類/爲自定義參數解析器實現了正確的接口?因爲這從舊版本改變(儘管我假設你最終使用'HandlerMethodArgumentResolver')。你可以發佈你的完整配置,也可能是你的控制器。你也做代碼升級或者只是框架升級? (它應該或多或少地成爲實際替代品的下降)。 –

+0

是的,我的客戶解析器實現HandlerMethodArgumentResolver。不應該通過內置的轉換器將請求參數綁定到控制器方法參數,我不必明確定義? 我在代碼更新方面做得不多,主要是配置文件。 – Jason

+0

此外,它只是來自IDE的警告,您的代碼是否真正起作用?在IDE中有警告的事實並不意味着什麼。它確實不會覆蓋它們,它補充了它們。 –

回答

2

作爲升級的一部分,您還將Spring Security升級到4.1。在3.2和4.x之間,默認登錄網址已更改爲/j_spring_security_check/login。 (見https://github.com/spring-projects/spring-security/issues/3010)。

現在Spring Security處理請求到/login,並且由於身份驗證失敗(它不包含原始參數,因爲它是一個新的空請求)最終收到重定向。

+0

這樣做,謝謝!我改變了我的自定義登錄控制器的映射,它工作。 – Jason