Java 将RequestMappingHandlerMapping配置为不解码url

Java 将RequestMappingHandlerMapping配置为不解码url,java,spring,spring-mvc,spring-3,Java,Spring,Spring Mvc,Spring 3,我有一个带有Java配置的SpringMVC3.2.8应用程序。我想禁用url解码,就像在uri中使用/一样。Spring 3.2.8应该解决这个问题 问题是,我无法在RequestMappingHandlerMapping中将Url解码设置为false。我试图用以下方法覆盖它: @Configuration public class MobileWebPublicConfig extends WebMvcConfigurationSupport { @Bean public

我有一个带有Java配置的SpringMVC3.2.8应用程序。我想禁用url解码,就像在uri中使用
/
一样。Spring 3.2.8应该解决这个问题

问题是,我无法在
RequestMappingHandlerMapping
中将Url解码设置为
false
。我试图用以下方法覆盖它:

@Configuration
public class MobileWebPublicConfig extends WebMvcConfigurationSupport {

    @Bean
    public RequestMappingHandlerMapping requestMappingHandlerMapping() {
        RequestMappingHandlerMapping handlerMapping = super.requestMappingHandlerMapping();
        handlerMapping.setUrlDecode(false);
        return handlerMapping;
    }
}
但当我这样做时,它会中断我的应用程序,自动布线停止工作

我错过了什么


更新:容器是Tomcat 6,没有stacktrace相关,应用程序在尝试访问自动连线元素时失败,原因是该元素为空。对上面的配置进行注释可以使其正常工作。

编辑:还要确保您没有
@EnableWebMvc
注释,因为此注释将导入原始
WebMvcConfigurationSupport
,而不是扩展版本

WebMVCConfigurationSupportJavadoc说

通常通过将@EnableWebMvc添加到application@Configuration类来导入它。另一个更高级的选项是直接从这个扩展 根据需要初始化并重写方法,记住要添加 @配置子类和@Bean以重写@Bean方法

的文档描述了定制配置的三个自定义级别。你可以:

  • 单独使用
    @EnableWebMvc
    导入标准配置
  • 对扩展的配置类使用
    @EnableWebMvc
    ;子类将自动调用其实现的方法,以将您的更改应用于标准配置
  • 不要使用
    @EnableWebMvc
    ,而是让您的配置类扩展以获得对配置的完全控制
  • 但是,文档没有明确说明的是,如果选择选项3,它将不会自动应用在扩展
    WebMVCConfigureAdapter
    的类中实现的方法

    正如其他人所说,我们确实需要查看您的完整配置,但是如果简单地扩展
    WebMvcConfigurationSupport
    并删除
    @EnableWebMvc
    会破坏配置的其他部分,我猜您仍然在配置的其他地方使用
    webmvcconfigureadapter

    如果是这种情况,您有两个选择:

  • 重写使用
    WebMVCConfigureAdapter
    的所有配置,并将代码移动到扩展
    WebMvcConfigurationSupport
    的单个配置类中
  • 扩展而不是
    WebMvcConfigurationSupport
    。这将为您提供使用
    @EnableWebMvc
    时通常获得的所有标准配置行为,但仍允许您根据需要重写方法。请注意,在您重写的任何方法中,如果您想保持默认行为,还需要在
    super()
    中调用等效的方法
    是否有任何例外情况发生?如果是肯定的,你能发布它的堆栈跟踪吗?你在哪个servlet容器上?你需要给出更多的细节,因为它在3.2.8上对我来说很好。向我们显示其余(完整)配置。除非
    @Autowired
    注释的
    required
    属性设置为
    false
    ,否则自动连线目标不能为
    null
    。您在做其他错误的事情。@SotiriosDelimanolis看起来我把WebMvcConfigurationSupport与其他东西混淆了,因为查看源代码时,它没有任何类级注释。我编辑了我的答案