问题描述
例如:@RequestMapping(value = "/test/{id}", method = RequestMethod.POST)1、如果id的值是小数,则小数点后面的值在@PathVariable String id中取不到了,就好像被当作.do这种扩展名被忽略了。2、如果请求方填写id的值中包含“八”这个汉字(目前只发现这个汉字会出现问题),就会出错,如下:WARN 2013-04-16 15:43:32 -- No mapping found for HTTP request with URI [/testservice/test/八一] in DispatcherServlet with name 'rest' -- org.springframework.web.servlet.DispatcherServlet.noHandlerFound(DispatcherServlet.java:1080)以上这两个问题,望大侠们帮忙看看吧。小弟先谢过了!!!
解决方案
第一种办法:增加useDefaultSuffixPattern属性为false <bean id="handlerMapping" class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"> <property name="order" value="0" /> <property name="useDefaultSuffixPattern" value="false" /> </bean>但是有个前提,就是需要配置这个<mvc:resources mapping="/**" location="/" order="1"/>第二种办法:使用正则表达式,开涛讲的办法,我测试,也是行得通的
解决方案二:
{id:.*} 使用正则表达式试试 回头研究下why
解决方案三:
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"> <property name="useDefaultSuffixPattern" value="false" /> </bean> 配置增加useDefaultSuffixPattern属性。