【问题标题】:Spring Request Mapping Regex "Not Contains" not workingSpring请求映射正则表达式“不包含”不起作用
【发布时间】:2019-07-24 14:29:58
【问题描述】:

每当浏览器转到任何路径时,我希望我的应用程序路由到“/” “/api”除外。

这是我在控制器中的 redirectIfNotApi() 方法上所做的。

@Controller
@RequestMapping("/")
class MyController {

    @RequestMapping(value = "{^(?!api).$}")
    public String redirectIfNotApi() {
        System.out.println("Route to VueJS anything except /api");
        return "forward:/";
    }
}

正则表达式 {^(?!api).$} 不起作用。 每次我尝试访问 localhost:8080/ 时,都不会调用 redirectIfNotApi()。

请帮忙。谢谢。

【问题讨论】:

    标签: spring spring-boot spring-mvc-test


    【解决方案1】:

    根据下面的弹簧文档链接: https://docs.spring.io/spring/docs/3.2.x/spring-framework-reference/html/mvc.html#mvc-ann-requestmapping-uri-templates-regex

    我们需要遵循 {varName:regex} 的语法

    请检查这是否有效。

    Mat be {varname:^(?!api).$} 可能有效!!

    【讨论】:

      【解决方案2】:

      问题在于您使用的正则表达式。匹配api 缺失的正确正则表达式是^((?!api).)*$。所以替换正则表达式如下:

      @RequestMapping(value = "{^((?!api).)*$}")
      public String redirectIfNotApi() {
          System.out.println("Route to VueJS anything except /api");
          return "forward:/";
      }
      

      【讨论】:

      • @tuty_fruity 这对你有帮助吗?最好承认这一点。
      猜你喜欢
      • 1970-01-01
      • 2020-07-15
      • 1970-01-01
      • 2014-05-15
      • 1970-01-01
      • 2019-01-30
      • 2014-06-12
      • 2020-03-24
      • 1970-01-01
      相关资源
      最近更新 更多