2016-06-09 2 views
1

Я обновляю с Spring 3.2 до 4.1 и пытаюсь обновить конфигурацию MVC.Spring-MVC 3.2 до 4.1 Обновление: @RequestParam Not Binding

Краткая версия: Я могу подтвердить, что запрос посылает параметры:

userId:USERNAME 
password:PASSWORD 
termsAccepted:true 

типа Содержимого application/x-www-form-urlencoded.

Spring Security 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 URL-адрес для входа по умолчанию изменен на /j_spring_security_check на /login. (См. https://github.com/spring-projects/spring-security/issues/3010).

Теперь эффективно Spring Security обрабатывает запросы /login, и ваш контроллер в конечном итоге получает перенаправление из-за сбоя аутентификации (который не содержит исходные параметры, так как это новый пустой запрос).

+0

Это сделало, спасибо! Я изменил отображение моего пользовательского контроллера входа, и он сработал. – Jason

Смежные вопросы