gpt4 book ai didi

java - 如何匹配具有包含 "/"的 @pathVariable 的 Spring @RequestMapping?

转载 作者:IT老高 更新时间:2023-10-28 13:54:36 24 4
gpt4 key购买 nike

我正在执行来自客户端的以下请求:

/search/hello%2Fthere/

搜索词“hello/there”已被 URL 编码。

在服务器上,我尝试使用以下请求映射匹配此 URL:


@RequestMapping("/search/{searchTerm}/")
public Map searchWithSearchTerm(@PathVariable String searchTerm) {
// more code here
}

但是我在服务器上收到错误 404,因为我没有任何匹配的 URL。我注意到 URL 在 Spring 获取之前已被解码。因此正在尝试匹配没有任何匹配项的/search/hello/there。

我在这里找到了与此问题相关的 Jira:http://jira.springframework.org/browse/SPR-6780 .但我仍然不知道如何解决我的问题。

有什么想法吗?

谢谢

最佳答案

没有很好的方法来做到这一点(不处理 HttpServletResponse)。你可以这样做:

@RequestMapping("/search/**")  
public Map searchWithSearchTerm(HttpServletRequest request) {
// Don't repeat a pattern
String pattern = (String)
request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE);

String searchTerm = new AntPathMatcher().extractPathWithinPattern(pattern,
request.getServletPath());

...
}

关于java - 如何匹配具有包含 "/"的 @pathVariable 的 Spring @RequestMapping?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2334787/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com