我希望我的应用程序在浏览器转到任何路径时都路由到“ /” 除了“ / 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()。
请帮助。谢谢。
答案 0 :(得分:0)
按照下面的spring文档链接: https://docs.spring.io/spring/docs/3.2.x/spring-framework-reference/html/mvc.html#mvc-ann-requestmapping-uri-templates-regex
我们需要遵循{varName:regex}的语法
请检查是否可行。
垫上{varname:^(?! api)。$}可能有用!
答案 1 :(得分:0)
问题与您使用的正则表达式有关。匹配api
缺失的正确正则表达式为^((?!api).)*$
。因此,如下所示替换正则表达式:
@RequestMapping(value = "{^((?!api).)*$}")
public String redirectIfNotApi() {
System.out.println("Route to VueJS anything except /api");
return "forward:/";
}