gpt4 book ai didi

java - 将上下文路径参数添加到@GetMapping

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:08:09 26 4
gpt4 key购买 nike

我试图在不依赖 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,因此找不到 View 。

如果我像这样进行重定向:

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 中添加一些参数来添加上下文路径

更新 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 的 thymeleaf 页面时,找不到该页面(这是错误),因为在@GetMapping 无法找到可能是 webapp1 或 webapp2 的 contextPath 的方法。

我不想使用 server.contextPath,因为在那种情况下我认为您可以只有一个名为 server.contextPath 的项目。

谢谢

最佳答案

Spring 维护它的上下文路径,因此您不必担心。您的代码看起来不错。

你可以尝试什么。

尝试从 application.properties 文件中完全删除 server.contextPath 行。停止服务器清理和构建,重新启动服务器并再次启动应用程序。

关于java - 将上下文路径参数添加到@GetMapping,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49785084/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com