gpt4 book ai didi

java - 如何在 Spring MVC 的请求映射中始终返回用户所在的当前页面?

转载 作者:行者123 更新时间:2023-12-01 17:17:04 26 4
gpt4 key购买 nike

这里是 Spring 新手。

我有一个登录弹出窗口,可以在我的页面标题处打开。如果登录成功,我会重定向到索引页面,这样就可以了。如果登录尝试返回时出现错误,我想保留在同一页面上,仅在登录弹出窗口中显示错误。

登录信息通过 HTML 表单提交到相应的请求映射。

现在我正在努力抑制重定向。我将 Controller 内的目标 html 页面作为字符串传递,并且现在尝试始终“重定向”到用户所在的当前页面。

我可能甚至不需要在这里重定向,只需刷新,但不知道如何解决它。

Controller 代码如下所示。

@RequestMapping(value = "/login", method = RequestMethod.POST)
public String login(@ModelAttribute("loginForm") @Valid LoginFormModel login,
BindingResult result,
Model model,
HttpServletRequest request,
HttpServletResponse response,
HttpSession session) {

if (result.hasErrors()) {
setLoginError(login, model, request, session);
return "index"; // here is where I don't want to redirect to the index in case of error
}
}

我使用 Thymeleaf 作为模板框架。

我还考虑从请求中获取 URL,但只找到了目标 URI,而不是对象中的源。

最佳答案

您可以使用此解决方案:

@RequestMapping(value = "/login", method = RequestMethod.POST)
public String login(@ModelAttribute("loginForm") @Valid LoginFormModel login,
BindingResult result,
Model model,
HttpServletRequest request,
HttpServletResponse response,
HttpSession session) throws IOException {

if (result.hasErrors()) {
response.sendRedirect(request.getContextPath() + request.getRequestURI());
return null;
}
}

如果出现错误,您将返回 null(无 View ),但请求将根据响应对象重定向(纯 servlet 功能):

 response.sendRedirect(request.getContextPath() + request.getRequestURI());

如果您的网址没有任何上下文前缀(根上下文),您可以尝试省略 request.getContextPath()。

关于java - 如何在 Spring MVC 的请求映射中始终返回用户所在的当前页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61363657/

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