`
yeshaoting
  • 浏览: 684149 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

@PathVariable出现点号"."时导致路径参数截断获取不全的解决办法

 
阅读更多

 

 

 

@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


分享到:
评论

相关推荐

    获取Spring中@PathVariable注解里带点的完整参数.doc

    当我们使用 @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编程项目源文件源码案例素材源代码68--[自动点号机].zip源码scratch2.0 3.0编程项目源文件源码案例...

    mongo数据集合属性中存在点号(.)的解决方法

    - `get()`方法:在查询数据时,方法会根据点号分隔的字段名,逐层遍历DBObject,获取嵌套结构中的值。 - `hasValue()`方法:用于检查某个嵌套字段是否存在,同样处理点号分隔的字段名。 3. 点号的特殊含义: 在...

    随机点号器 v.1.0.cpp

    C++实现随机点名器 版本v1.0 1.支持文件读入(txt文本文件) 2.支持手动输入 3.不重复点名

    Android挂载以点号(.)开头的文件夹或是文件

    在Android系统中,以点号(.)开头的文件或文件夹通常被视为隐藏文件或隐藏目录,它们在默认情况下不会显示在文件管理器中。这种命名方式常用于存储系统配置、应用数据或者其他用户不直接操作的文件。在PC端挂载...

    点号重叠文字避让.lsp

    自动移动管线点点号,引线是点号基点与原来基点,更加直观表示

    挪点+改图面,自动周围挪点

    管线点自动挪点,不是带引线那种,就近找空白位置自动挪动,速度比较慢,但是效果很好,同时增加了自动替换专业代码功能

    重叠管线点号避让处理-自动挪点号(第2版).zip CAD管线图文字整饰神器,

    在复杂的管线图中,点号可能会出现重叠,导致图纸阅读困难,甚至产生误解。针对这一问题,"重叠管线点号避让处理-自动挪点号(第2版)"是一个高效解决方案,它是一个CAD管线图文字整饰神器,专为解决点号重叠而设计。 ...

    CASS一键标记高程与点号插件(命令ZD).rar_CASS插件_cass加高程插件_cass插件命令_land11h_zd点号

    1. **安装与调用**:首先,你需要将下载的压缩包文件"CASS一键标记高程与点号插件(命令ZD).rar"解压,获取其中的.LSP文件。在CASS软件环境中,通过加载此LSP文件,将插件安装到系统中。安装完成后,用户可以在CASS的...

    kvckvo.pdf

    - **Key Path**:由多个用点号分隔的键组成的字符串,用于指定一系列对象属性的遍历路径。第一个键相对接收者而言,后续的键则相对于前一个属性值进行评估。 例如,假设有一个对象`person`,该对象具有属性`address...

    Shell脚本调用另一个脚本的三种方法

    假如有脚本 first.sh: #!/bin/bash #------------------ #@file:first.sh #------------------ echo 'your are in first file' 如何在其它Shell脚本中调用first.sh呢?主要有三种方法:source、...2.点号. #!/bin/b

    CAD提取坐标的VBA源码

    - 如果选择手动输入点号,则通过`GetString`方法获取用户输入的点号;否则,使用自动递增的序号作为点号。 - 同样地,如果选择手动输入高程,则通过`GetString`方法获取用户输入的高程;否则,默认高程为0。 - ...

    JavaScript中的E-mail 地址格式验证

    本文给大家分享JavaScript中的E-mail 地址格式验证,项目要求输入的数据必须包含@符号和点号。代码简单易懂,非常不错,具有参考借鉴价值,需要的朋友参考下吧

    eclipse输入点号没有提示解决大全

    在使用eclipse或者MyEclipse工具开发的过程中,您可能会遇到,当您输入点号没有提示,您是不是觉得很郁闷呢,或者还是怀疑这可能是工具的bug呢!... 可是任何问题都有解决的办法,我可个解决大全或许可以帮你。

    softice使用技巧

    这段命令在`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的常用方法法示例

    在iOS开发中,`valueForKeyPath:` 是一个非常强大的方法,它是Key-Value Coding (KVC)的一部分,允许开发者通过字符串路径访问对象的属性,甚至能够处理数组和字典等集合对象。本文将深入探讨 `valueForKeyPath:` 的...

    电子表带点号的展点程序.xls

    电子表带点号的展点程序.xls

Global site tag (gtag.js) - Google Analytics