这是spring MVC@pathvariable被截断问题的继续
spring论坛声明,它已经修复(3.2版本)作为ContentNegotiationManager的一部分。请参阅以下链接。
https://jira.springsource.org/browse/spr-6164
https://jira.springsource.org/browse/spr-7632
在我的应用程序中,requestParameter with.com被截断。
谁能给我解释一下如何使用这个新功能吗?如何在XML中进行配置?
注:spring论坛-#1 spring MVC@PathVariable带点(.)正在被截断
据我所知,这个问题只出现在RequestMapping末尾的pathvariable。
我们可以通过在RequestMapping中定义regex addon来解决这个问题。
/somepath/{variable:.+}
如果您使用的是spring 3.2.x和
,请创建这个小的BeanPostProcessor
:
package spring;
public final class DoNotTruncateMyUrls implements BeanPostProcessor {
@Override
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
if (bean instanceof RequestMappingHandlerMapping) {
((RequestMappingHandlerMapping)bean).setUseSuffixPatternMatch(false);
}
return bean;
}
@Override
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
return bean;
}
}
然后将其放入MVC配置XML中:
<bean class="spring.DoNotTruncateMyUrls" />
除了Martin Frey的答案之外,还可以通过在RequestMapping值中添加一个尾随斜杠来修复这个问题:
/path/{variable}/
请记住,此修复程序不支持可维护性。它现在要求所有URI都有一个尾随斜杠--这对于API用户/新开发人员来说可能并不明显。由于可能不是所有参数中都包含.
,因此可能还会产生间歇性错误