在Spring MVC中更改URL

You*_*sef 5 java spring spring-mvc

我在URL中有一个这样的登录表单http://localhost:8080/myproject/login

<form:form method="POST"  modelAttribute="auth" action="welcome" id="formlogin">
[...]
</form:form>
Run Code Online (Sandbox Code Playgroud)

和这样的控制器:

@RequestMapping(value = "/welcome")
public String welcome([...]) {

    [...]

    if(logins.size() != 1) { 
        return "login"; 
    }

    [...]

    return "welcome";
}
Run Code Online (Sandbox Code Playgroud)

问题是,当登录名不正确时,我得到了此URL,http://localhost:8080/myproject/welcome但我想获取http://localhost:8080/myproject/login并获取welcome以防万一登录名正确。

第一次更新

就我而言,最好的使用方式

return "redirect:/login"
Run Code Online (Sandbox Code Playgroud)

但在我必须添加这样的属性之前

model.put("errorlogin", true);
Run Code Online (Sandbox Code Playgroud)

处理这个

<c:if test="${ errorlogin == true }">
<label class="loginerror">Login Error</label>
</c:if> 
Run Code Online (Sandbox Code Playgroud)

但是错误消息没有显示,而是我得到了这个URL

http://localhost:8080/pagesjaunes/login?errorlogin=true
Run Code Online (Sandbox Code Playgroud)

我设置一个属性,然后得到一个参数。

第二次更新

我解决了这个问题:

<c:if test="${ param.errorlogin == true }">
<label class="loginerror">Login Error</label>
</c:if>
Run Code Online (Sandbox Code Playgroud)

JB *_*zet 5

因此,您的表单应具有login其操作,并且如果登录成功,实现此操作的方法应重定向到welcome。

@RequestMapping(value = "/login", method = ResquestMethod.POST)
public String handleLogin([...]) {
    ...
    if (successful) {
        return "redirect:/welcome"
    }
}
Run Code Online (Sandbox Code Playgroud)