gpt4 book ai didi

java - Spring @RequestMapping 在多次提交时在 URL 中加倍

转载 作者:行者123 更新时间:2023-12-02 08:16:02 26 4
gpt4 key购买 nike

我是第一次使用 Spring 的注释,并且在后续点击 @RequestMapping 时遇到了一些 URL 翻倍的问题。我有以下代码片段:

@Controller @RequestMapping("/login")
public class Login {
private LoginService loginService;

@Autowired
public Login(LoginService loginService){
this.loginService = loginService;
}

@RequestMapping(method=RequestMethod.GET)
public String setupLogin(){ return "login"; }

@RequestMapping(method=RequestMethod.GET, value="/retry")
public String setupLoginRetry(){ return "login"; }

@RequestMapping(method=RequestMethod.POST)
public String processLogin(@ModelAttribute("userName") String userName, @ModelAttribute("password") String password){
if (true) return "redirect:login/retry"; //hard-coded for example
return "redirect:home";
}
}

如果我打开页面并多次点击提交,我会得到以下信息:

myApp/login

myApp/login/retry?userName=&password=

myApp/login/login // <-- this fails as it shouldn't be nesting logins

很明显,我做错了什么。我的问题是:

1.) 如何防止参数在重试时出现在 URL 中?编辑:删除这个问题 - found the answer .

2.) 为什么它开始嵌套登录以及声明这一点的正确方法是什么?

如有任何想法或帮助,我们将不胜感激。谢谢!

最佳答案

可能是由于您在 login View 中使用相对 URL 作为表单的 action 属性造成的。由于包含此表单的页面可以响应不同的 URL 来显示,因此您需要使用绝对 URL,如下所示:

<spring:url var = "loginUrl" value = "/login" />
<form:form action = "${loginUrl}" ...>...</form:form>

关于java - Spring @RequestMapping 在多次提交时在 URL 中加倍,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6430938/

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