我從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.
}
您是否擴展了正確的類/爲自定義參數解析器實現了正確的接口?因爲這從舊版本改變(儘管我假設你最終使用'HandlerMethodArgumentResolver')。你可以發佈你的完整配置,也可能是你的控制器。你也做代碼升級或者只是框架升級? (它應該或多或少地成爲實際替代品的下降)。 –
是的,我的客戶解析器實現HandlerMethodArgumentResolver。不應該通過內置的轉換器將請求參數綁定到控制器方法參數,我不必明確定義? 我在代碼更新方面做得不多,主要是配置文件。 – Jason
此外,它只是來自IDE的警告,您的代碼是否真正起作用?在IDE中有警告的事實並不意味着什麼。它確實不會覆蓋它們,它補充了它們。 –