1

我正在尝试找到一种方法来全局设置 AutoGrowNestedPaths=false 。

我目前正在使用基于 Java 的配置方法和扩展 WebMvcConfigurerAdapter 的 WebConfig。

4

2 回答 2

1

尽管 Biju 的回答为我指明了正确的方向,但示例代码可以更简洁,避免重新配置所有内容。这是我现在使用的代码:

@Bean
public RequestMappingHandlerAdapter requestMappingHandlerAdapter() {
    RequestMappingHandlerAdapter bean = super.requestMappingHandlerAdapter();
    ConfigurableWebBindingInitializer webBindingInitializer = (ConfigurableWebBindingInitializer) bean.getWebBindingInitializer();
    webBindingInitializer.setAutoGrowNestedPaths(false);
    return bean;
}

注意,一个坑爹的是Spring的WebMvcConfigurationSupport不能直接配置WebBindingInitializer。另请参阅https://jira.springsource.org/browse/SPR-8984

于 2012-09-22T20:11:44.227 回答
0

您可以通过直接从WebMvcConfigurationSupport扩展您的 Web 配置来做到这一点:

 @Configuration
 public class WebConfiguration extends WebMvcConfigurationSupport {

    @Bean
    public RequestMappingHandlerAdapter requestMappingHandlerAdapter() {
        ConfigurableWebBindingInitializer webBindingInitializer = new ConfigurableWebBindingInitializer();
        webBindingInitializer.setConversionService(mvcConversionService());
        webBindingInitializer.setValidator(mvcValidator());
        webBindingInitializer.setAutoGrowNestedPaths(false);


        List<HandlerMethodArgumentResolver> argumentResolvers = new ArrayList<HandlerMethodArgumentResolver>();
        addArgumentResolvers(argumentResolvers);

        List<HandlerMethodReturnValueHandler> returnValueHandlers = new ArrayList<HandlerMethodReturnValueHandler>();
        addReturnValueHandlers(returnValueHandlers);

        RequestMappingHandlerAdapter adapter = new RequestMappingHandlerAdapter();
        adapter.setMessageConverters(getMessageConverters());
        adapter.setWebBindingInitializer(webBindingInitializer);
        adapter.setCustomArgumentResolvers(argumentResolvers);
        adapter.setCustomReturnValueHandlers(returnValueHandlers);
        return adapter;
    }
 }
于 2012-09-21T22:18:17.033 回答