如何解决当多个提交时,Spring @RequestMapping的URL会增加一倍
|| 我是第一次使用Spring的注释,URL在随后的of0命中加倍时出现了一些问题。我有以下片段:@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 /登录
myApp / login / retry?userName =&password =
myApp / login / login // <-失败,因为它不应该嵌套登录名
很明显,我做错了事。我的问题是:
1.)如何防止重试参数显示在URL中?编辑:删除此问题-找到了答案。
2)为什么它开始嵌套登录名,正确的声明方式是什么?
任何想法或协助将不胜感激。谢谢!
解决方法
可能是由于您在
login
视图中使用相对URL作为表单的action
属性所致。由于可以显示包含此表单的页面以响应不同的URL,因此您需要使用绝对URL,如下所示:
<spring:url var = \"loginUrl\" value = \"/login\" />
<form:form action = \"${loginUrl}\" ...>...</form:form>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。