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,

Другие вопросы по тегам