@RequestMapping(method = RequestMethod.GET, value = Routes.BLAH_GET + "/{blahName}")public ModelAndView getBlah(@PathVariable String blahName, HttpServletRequest request, HttpServletResponse response) {
我遇到的问题是,如果我打的服务器路径变量有特殊字符它就会被截断。例如: 该会blah2010.08 但是,调用request.getRequestURI()包含了所有传入 任何想法如何预防春季从截断@PathVariable?@RequestMapping
RequestMapping(method = RequestMethod.GET, value = Routes.BLAH_GET + "/{blahName:.+}")
blah2010.08.19-02:25:47
成blah2010.08
的,因为它认为.19-02:25:47
是一个文件扩展名。 作为链接的问题描述,您可以通过声明自己禁用此行为DefaultAnnotationHandlerMapping
豆在应用程序上下文,并设置其useDefaultSuffixPattern
属性为false
。这将覆盖默认行为,并停止它骚扰你的数据。 DefaultAnnotationHandlerMapping
并设置useDefaultSuffixPattern
至false
(默认为true
)。 所以,打开你的Spring XMLmvc-config.xml
(或者不管它被称为),并添加<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"> <property name="useDefaultSuffixPattern" value="false" /></bean>
现在你的@PathVariable
blahName
(和所有其他,太)应包含完整的,包括所有的点。 编辑:这里是一个链接到spring的api @RequestMapping(method = RequestMethod.GET, value = {Routes.BLAH_GET + "/{blahName:.+}", Routes.BLAH_GET + "/{blahName}/"})
@PathVariable("requestParam") String requestParam, HttpServletRequest request) throws Exception {
2)直接获取的URL(在这个层面上没有截断)的请求request.getPathInfo() <BR>
Spring MVC的@PathVariable以点(。)是越来越截断 @RequestMapping(method = RequestMethod.GET, value = Routes.BLAH_GET + "/{blahName}")
至@RequestMapping( method = RequestMethod.GET, value = Routes.BLAH_GET + "/{blahName}/safe")
一切都会好起来, @RequestMapping
值):/path/{variable}/
这样的映射将如下所示:RequestMapping(method = RequestMethod.GET, value = Routes.BLAH_GET + "/{blahName}/")
联系客服