【问题标题】:Spring 4 @RequestMapping handling REST URL with special charactersSpring 4 @RequestMapping 处理带有特殊字符的 REST URL
【发布时间】:2015-09-26 07:32:51
【问题描述】:

Spring 4 如何处理带有#等特殊字符的 REST URL?

例如:http://localhost:8080/#/members/browse?id=1234

以下代码似乎不起作用。

因为Spring总是丢弃(包括)#之后的所有内容,只返回http://localhost:8080的响应

谁能给我们一些帮助?

@RequestMapping(value = "/#/members/browse", method = RequestMethod.GET, produces = "application/json")
public String findMembers(@RequestParam(value="id", required=false) {
   // some code
}

【问题讨论】:

  • 尝试# 的编码形式,即%23。也许它会起作用。
  • 感谢您的建议。但是@RequestMapping (value = "/%23/members/browse") 似乎不起作用,Spring 仍然只返回 localhost:8080 的响应...
  • 我认为 # 之后的所有内容都不会发送到服务器,因此您无法从 Spring MVC 访问它

标签: spring rest spring-mvc spring-boot


【解决方案1】:

这是预期的行为。它是一个fragment identifier,并不打算用于在服务器端路由请求。

在您的浏览器中,单击同一页面中的另一个锚链接(如 #/members/browse?id=5678)会在页面中查找锚点,但不会向服务器发送请求。

我认为您可能正在使用诸如 Ember 或 Angular 之类的 javascript 框架,它们提供路由组件来在客户端路由这些事件并呈现视图。见the router documentation for Ember

【讨论】:

    猜你喜欢
    • 2015-09-12
    • 1970-01-01
    • 1970-01-01
    • 2017-04-14
    • 1970-01-01
    • 1970-01-01
    • 2019-07-12
    • 1970-01-01
    • 2018-09-04
    相关资源
    最近更新 更多