java - Spring MVC Controller 映射正则表达式

标签 java spring spring-mvc

我的 Controller 映射:

@RequestMapping(value = "{objectId}/{objectName: [a-zA-Z-]+}", method = GET)
public String getObjects(@PathVariable Integer objectId, Model model) { ... }

@RequestMapping(value = "{objectId}/{objectName: [a-zA-Z-]+}_{category}", method = GET)
public String getObjectsForCategories(@PathVariable Integer objectId, 
                                      @PathVariable String category, 
                                      Model model) { ... } 

我正在访问的网址:

http://localhost:8080/objects/2/xyz

http://localhost:8080/objects/2/xyz_mobile

Spring 无法找到处理程序并提示找不到 HTTP 请求的映射。

最佳答案

根据Spring MVC documentation:

The @RequestMapping annotation supports the use of regular expressions in URI template variables. The syntax is {varName:regex} where the first part defines the variable name and the second - the regular expression.

因此,您应该删除 :regex 之间的空格,如下所示:

@RequestMapping(value = "{objectId}/{objectName:[a-zA-Z-]+}", method = GET)
                                                ^ Space is removed

关于java - Spring MVC Controller 映射正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37329238/

相关文章:

java - Spring MDP - 如何在收到错误消息时将其关闭

java.lang.VerifyError : in tomcat in fedora env 错误

spring-mvc - Spring 社交 Facebook

java - 使用 curator treeCache 时,如何确保缓存准备就绪?

java - 接口(interface) itable 初始化中加载器约束冲突 :

java - 如何通过 <init> 中的调用解决 webdriver 设置中的 NullPointerException?

java - 我有保留窗口,但数据未保存。如何将 boolean 值存储到数据库中?

javascript - 如何提供解耦的 React 前端?

java - SecurityContextHolder 不是一个 Bean 吗?

java - Spring 销毁ScopedBean?