我正在尝试创建路由而不依赖于application.properties中的server.contextPath
这是一个例子:
@PreAuthorize("hasRole('ROLE_ADMIN')
@GetMapping("/dashboard/admin/list/param1/{param1}")
public String method(@PathVariable String param1, Model model, HttpServletRequest request) {
//Some stuff
String contextPath = request.getContextPath();
return contextPath + "/dashboard/admin/list";
}
但是按预期,由于添加了contextPath,因此找不到该视图。
如果我这样重定向:
String contextPath = request.getContextPath();
String redirect = contextPath + "/dashboard/admin/list";
return "redirect:/dashboard/admin/directorio/list";
一切正常,但有时我不需要重定向。
背后的想法是,按照我在此链接中的要求,遵循将过程部署为tomcat中的war文件的过程:
How to get context path in controller without set in application.properties
所以问题是:可以在@GetMapping中添加一些参数来添加contextPath
更新1
我不确定你在问什么。
可以说我从同一个名为webapp1和webapp2的项目中创建了两个war项目,并将其部署在tomcat服务器中。
我可以像这样访问两个项目:
http://localhost:8080/webapp1/dashboard/admin/list/param1/100
http://localhost:8080/webapp2/dashboard/admin/list/param1/200
但是当我返回到位于 src / main / resources / templates / dashboard / admin / list.html 的百里香页面时,找不到该页面(这是错误的),因为
@GetMapping 的方法无法找到contextPath,它可能是webapp1或webapp2。
我不想使用server.contextPath,因为在那种情况下,我认为您只能拥有一个名称为server.contextPath的项目。
谢谢
最佳答案
Spring维护它的上下文路径,因此您不必担心。
您的代码看起来不错。
您可以尝试的。
尝试从application.properties文件中完全删除server.contextPath行。停止清理和构建服务器,重新启动服务器,然后再次启动应用程序。