@PathVariable出现点号"."时导致路径参数截断获取不全的解决办法
问题实例:
@RequestMapping( value = "/file" )
参数声明:@RequestMapping(value = "{filename}", method = RequestMethod.GET)
传入参数:/file/some_file.32HIK345KHJKH.jpg
获取参数:/file/some_file.32HIK345KHJKH
参考链接:
http://stackoverflow.com/questions/3526523/spring-mvc-pathvariable-getting-truncated
http://stackoverflow.com/questions/7027366/spring-3-0-multiple-pathvariables-problem
http://forum.springsource.org/showthread.php?78085-Problems-with-RequestMapping&p=263563#post263563
http://forum.springsource.org/showthread.php?84738-UrlRewrite-PathVariable-multiple-dots-in-filename
Thread: UrlRewrite, @PathVariable multiple dots in filename
参考:http://forum.springsource.org/showthread.php?84738-UrlRewrite-PathVariable-multiple-dots-in-filename
UrlRewrite, @PathVariable multiple dots in filename
I have a "/file" - controller in a Spring REST web application which provides file streams. So a common scenario for a call is:/file/some_file.32HIK345KHJKH.jpg
I use the urlrewrite.xml from the Spring 3 REST example. For the file controller I added a special rule, with regex instead ofwildcards, like follows:
Code:
...
<rule match-type="regex">
<from>^/file/([^/]*)$</from>
<to>/app/file/$1</to>
</rule>
...
The controller handler code for the GET method looks like the following:
Code:
@RequestMapping(value = "{filename}", method = RequestMethod.GET)
public void provideFile(@PathVariable String filename,OutputStream outputStream) throws IOException {
...
// here I do sth. with the filename
...
}
Problem is that the original filename is truncated before last dot. This happens somewhere in between the URL call and the controller handler. So filename only contains: some_file.32HIK345KHJKH instead of some_file.32HIK345KHJKH.jpg
So my question is, what I'm doing wrong and why is the filename truncated at before last dot.
Cheers
Maik
Feb 15th, 2010, 12:14 PM#2
dvestal
Junior Member
Join Date
Jun 2008
Location
Springfield, MO
Posts
21
The @PathVariable resolution will end at the period when using a String variable. You can specify a regex in your @PathVariable declaration though to be able to match your file patterns. I'd have to look at it more closely to determine the actual regex needed, but it shouldn't be difficult.
@PathVariable("{filename:[a-zA-Z0-9\.]+}") String filename
Feb 15th, 2010, 04:52 PM#3
Mammut
Junior Member
Join Date
Feb 2010
Posts
2
@dvestal
Thank you dvestal. You pointed me in the right direction. I did further investigations and found this thread here in den forum:http://forum.springsource.org/showth...563#post263563
So the trick with the regualar expression override did the job.
Cheers
Maik
分享到:
相关推荐
当我们使用 @PathVariable 注解来获取 URL 中的参数时,如果参数带有点号(.),Spring 会自动截断参数,例如: * 访问 http://127.0.0.1:8080/param/hehe 返回 hehe * 访问 ...
68--[自动点号机].zip源码scratch2.0 3.0编程项目源文件源码案例素材源代码68--[自动点号机].zip源码scratch2.0 3.0编程项目源文件源码案例素材源代码68--[自动点号机].zip源码scratch2.0 3.0编程项目源文件源码案例...
- `get()`方法:在查询数据时,方法会根据点号分隔的字段名,逐层遍历DBObject,获取嵌套结构中的值。 - `hasValue()`方法:用于检查某个嵌套字段是否存在,同样处理点号分隔的字段名。 3. 点号的特殊含义: 在...
C++实现随机点名器 版本v1.0 1.支持文件读入(txt文本文件) 2.支持手动输入 3.不重复点名
在Android系统中,以点号(.)开头的文件或文件夹通常被视为隐藏文件或隐藏目录,它们在默认情况下不会显示在文件管理器中。这种命名方式常用于存储系统配置、应用数据或者其他用户不直接操作的文件。在PC端挂载...
自动移动管线点点号,引线是点号基点与原来基点,更加直观表示
管线点自动挪点,不是带引线那种,就近找空白位置自动挪动,速度比较慢,但是效果很好,同时增加了自动替换专业代码功能
在复杂的管线图中,点号可能会出现重叠,导致图纸阅读困难,甚至产生误解。针对这一问题,"重叠管线点号避让处理-自动挪点号(第2版)"是一个高效解决方案,它是一个CAD管线图文字整饰神器,专为解决点号重叠而设计。 ...
1. **安装与调用**:首先,你需要将下载的压缩包文件"CASS一键标记高程与点号插件(命令ZD).rar"解压,获取其中的.LSP文件。在CASS软件环境中,通过加载此LSP文件,将插件安装到系统中。安装完成后,用户可以在CASS的...
- **Key Path**:由多个用点号分隔的键组成的字符串,用于指定一系列对象属性的遍历路径。第一个键相对接收者而言,后续的键则相对于前一个属性值进行评估。 例如,假设有一个对象`person`,该对象具有属性`address...
假如有脚本 first.sh: #!/bin/bash #------------------ #@file:first.sh #------------------ echo 'your are in first file' 如何在其它Shell脚本中调用first.sh呢?主要有三种方法:source、...2.点号. #!/bin/b
- 如果选择手动输入点号,则通过`GetString`方法获取用户输入的点号;否则,使用自动递增的序号作为点号。 - 同样地,如果选择手动输入高程,则通过`GetString`方法获取用户输入的高程;否则,默认高程为0。 - ...
本文给大家分享JavaScript中的E-mail 地址格式验证,项目要求输入的数据必须包含@符号和点号。代码简单易懂,非常不错,具有参考借鉴价值,需要的朋友参考下吧
在使用eclipse或者MyEclipse工具开发的过程中,您可能会遇到,当您输入点号没有提示,您是不是觉得很郁闷呢,或者还是怀疑这可能是工具的bug呢!... 可是任何问题都有解决的办法,我可个解决大全或许可以帮你。
这段命令在`system32\driver\winice.dat`文件中会被截断,导致SoftICE启动时出现错误。解决方案是直接在`winice.dat`文件中分两行输入命令: ``` init="faults off;set font 2;lines 40;width 80;wd.1 1;dd;dex 1 @...
在iOS开发中,`valueForKeyPath:` 是一个非常强大的方法,它是Key-Value Coding (KVC)的一部分,允许开发者通过字符串路径访问对象的属性,甚至能够处理数组和字典等集合对象。本文将深入探讨 `valueForKeyPath:` 的...
电子表带点号的展点程序.xls