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对象作为参数传递给CCD_ 1方法。

然而,人们可以使用:

@EnableWebMvc
@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {
}

以及绕过CCD_ 2配置。

那么,如何以编程方式添加DeviceWebArgumentResolver呢?

解决方案(Luciano):

@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()));
    }
    // ...
}

WebMvcConfigurerAdapter包含一个名为addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) 的方法

这是您需要实现的方法,但首先需要将WebArgumentResolver(在本例中为DeviceWebArgumentResolver)转换为HandlerMethodArgumentResolver。为此,存在一个名为ServletWebArgumentResolverAdapter的类。

最新更新