Spring Mobile: как добавить DeviceWebArgumentResolver программно?
В мобильной документации Spring предлагается добавить следующую конфигурацию:
<mvc:annotation-driven>
<mvc:argument-resolvers>
<beans:bean class="org.springframework.mobile.device.DeviceWebArgumentResolver" />
</mvc:argument-resolvers>
</mvc:annotation-driven>
передать текущий объект Device в качестве аргумента @Controller
методы.
Тем не менее, можно использовать:
@EnableWebMvc
@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {
}
и обойти <mvc:annotation-driven>
конфигурации.
Затем, как добавить DeviceWebArgumentResolver
программно?
Решение (Лучано):
@EnableWebMvc
@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void addArgumentResolvers(
List<HandlerMethodArgumentResolver> argumentResolvers) {
// Adding Spring mobile argument resolvers
argumentResolvers.add(
new ServletWebArgumentResolverAdapter(
new DeviceWebArgumentResolver()));
argumentResolvers.add(
new ServletWebArgumentResolverAdapter(
new SitePreferenceWebArgumentResolver()));
}
// ...
}
1 ответ
Решение
WebMvcConfigurerAdapter
содержит метод с именем addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers)
Это метод, который вам нужно реализовать, но сначала вам нужно преобразовать WebArgumentResolver
(в этом случае, DeviceWebArgumentResolver
) в HandlerMethodArgumentResolver
, Для этого существует класс с именем ServletWebArgumentResolverAdapter
,