【问题标题】:How can I get 3 different path url in @RequestMapping SpringBoot + Thymeleaf如何在@RequestMapping SpringBoot + Thymeleaf 中获取 3 个不同的路径 url
【发布时间】:2017-05-15 00:24:36
【问题描述】:

我对 Spring Boot 中的 @RequestMapping 有疑问。

我想做login() 方法,其中取决于用户角色,他将被重定向到不同的路径。

例如,我有 3 个用户角色:

  • 管理员
  • 学生
  • 老师

在 thymeleaf 中,我使用 th:action 形式,例如:

<form th:action="@{/login}" th:object="${userR}" method="post">

我制作方法:

@RequestMapping(value = "/login", method=RequestMethod.POST)
public String login(Model model, @ModelAttribute("userR") User user) {

对于这 3 个角色,我总是登录到地址/登录,但我想登录

  • 地址/管理员
  • 地址/学生
  • 地址/老师

如何为每个角色设置此 url 路径?

例如,只需让 if 和“返回地址/学生”将我重定向到正确的页面,但 url 仍然是“地址/登录”。

每个角色都会不同@Controller

【问题讨论】:

  • 为什么每个角色都需要不同的控制器?你可以只检查一个控制器中的角色吗?
  • 是的,我可以做到,但我需要为 3 种不同类型的用户使用不同的控制器。哪个角色当前有登录用户我将在这个方法“login()”中检查它

标签: spring spring-mvc thymeleaf request-mapping


【解决方案1】:

在 Spring 中,当您将 URL 作为“地址/学生”返回时,它将被视为转发请求,因此不会往返于客户端,因此不会更改客户端的 URL。

如果您要更改 URL,则请求必须是重定向请求,在这种情况下,请求将往返于客户端。无论是 Servlet 框架还是 Spring 框架都是如此。

而在 Spring 中正确的做法是在 URL 前面加上文本“redirect:”
例如:return "redirect:xyzPage"

【讨论】:

  • 感谢您的回答,这正是我想要的。
猜你喜欢
  • 2011-04-10
  • 2013-11-13
  • 2011-07-30
  • 1970-01-01
  • 1970-01-01
  • 2022-06-23
相关资源
最近更新 更多