Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
爱吃血肠
spring-framework
提交
5675046c
S
spring-framework
项目概览
爱吃血肠
/
spring-framework
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
spring-framework
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
5675046c
编写于
3月 02, 2010
作者:
A
Arjen Poutsma
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
SPR-6876 - RequestMethod does not appear to factor into @RequestMapping uniqueness in some cases
上级
20a80396
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
51 addition
and
3 deletion
+51
-3
org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/handler/AbstractUrlHandlerMapping.java
...mework/web/servlet/handler/AbstractUrlHandlerMapping.java
+16
-3
org.springframework.web.servlet/src/test/java/org/springframework/web/servlet/mvc/annotation/UriTemplateServletAnnotationControllerTests.java
...notation/UriTemplateServletAnnotationControllerTests.java
+35
-0
未找到文件。
org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/handler/AbstractUrlHandlerMapping.java
浏览文件 @
5675046c
...
...
@@ -22,6 +22,7 @@ import java.util.LinkedHashMap;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Set
;
import
java.util.Comparator
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
...
...
@@ -257,8 +258,9 @@ public abstract class AbstractUrlHandlerMapping extends AbstractHandlerMapping {
}
}
String
bestPatternMatch
=
null
;
Comparator
<
String
>
patternComparator
=
getPathMatcher
().
getPatternComparator
(
urlPath
);
if
(!
matchingPatterns
.
isEmpty
())
{
Collections
.
sort
(
matchingPatterns
,
getPathMatcher
().
getPatternComparator
(
urlPath
)
);
Collections
.
sort
(
matchingPatterns
,
patternComparator
);
if
(
logger
.
isDebugEnabled
())
{
logger
.
debug
(
"Matching patterns for request ["
+
urlPath
+
"] are "
+
matchingPatterns
);
}
...
...
@@ -273,8 +275,19 @@ public abstract class AbstractUrlHandlerMapping extends AbstractHandlerMapping {
}
validateHandler
(
handler
,
request
);
String
pathWithinMapping
=
getPathMatcher
().
extractPathWithinPattern
(
bestPatternMatch
,
urlPath
);
Map
<
String
,
String
>
uriTemplateVariables
=
getPathMatcher
().
extractUriTemplateVariables
(
bestPatternMatch
,
urlPath
);
// There might be multiple 'best patterns', let's make sure we have the correct URI template variables
// for all of them
Map
<
String
,
String
>
uriTemplateVariables
=
new
LinkedHashMap
<
String
,
String
>();
for
(
String
matchingPattern
:
matchingPatterns
)
{
if
(
patternComparator
.
compare
(
bestPatternMatch
,
matchingPattern
)
==
0
)
{
uriTemplateVariables
.
putAll
(
getPathMatcher
().
extractUriTemplateVariables
(
matchingPattern
,
urlPath
));
}
}
if
(
logger
.
isDebugEnabled
())
{
logger
.
debug
(
"URI Template variables for request ["
+
urlPath
+
"] are "
+
uriTemplateVariables
);
}
return
buildPathExposingHandler
(
handler
,
bestPatternMatch
,
pathWithinMapping
,
uriTemplateVariables
);
}
// No handler found...
...
...
org.springframework.web.servlet/src/test/java/org/springframework/web/servlet/mvc/annotation/UriTemplateServletAnnotationControllerTests.java
浏览文件 @
5675046c
...
...
@@ -321,6 +321,25 @@ public class UriTemplateServletAnnotationControllerTests {
assertEquals
(
"M5"
,
response
.
getContentAsString
());
}
/*
* See SPR-6876
*/
@Test
public
void
variableNames
()
throws
Exception
{
initServlet
(
VariableNamesController
.
class
);
MockHttpServletRequest
request
=
new
MockHttpServletRequest
(
"GET"
,
"/test/foo"
);
MockHttpServletResponse
response
=
new
MockHttpServletResponse
();
servlet
.
service
(
request
,
response
);
assertEquals
(
"foo-foo"
,
response
.
getContentAsString
());
request
=
new
MockHttpServletRequest
(
"DELETE"
,
"/test/bar"
);
response
=
new
MockHttpServletResponse
();
servlet
.
service
(
request
,
response
);
assertEquals
(
"bar-bar"
,
response
.
getContentAsString
());
}
/*
* Controllers
...
...
@@ -555,5 +574,21 @@ public class UriTemplateServletAnnotationControllerTests {
}
}
@Controller
@RequestMapping
(
"/test"
)
public
static
class
VariableNamesController
{
@RequestMapping
(
value
=
"/{foo}"
,
method
=
RequestMethod
.
GET
)
public
void
foo
(
@PathVariable
String
foo
,
Writer
writer
)
throws
IOException
{
writer
.
write
(
"foo-"
+
foo
);
}
@RequestMapping
(
value
=
"/{bar}"
,
method
=
RequestMethod
.
DELETE
)
public
void
bar
(
@PathVariable
String
bar
,
Writer
writer
)
throws
IOException
{
writer
.
write
(
"bar-"
+
bar
);
}
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录