2014-02-13 39 views
4

我在URL http://localhost:8080/myproject/login有一個登錄表單是這樣的:更改URL

<form:form method="POST" modelAttribute="auth" action="welcome" id="formlogin"> 
[...] 
</form:form> 

和這樣的控制器:

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

    [...] 

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

    [...] 

    return "welcome"; 
} 

的問題是,當登陸不正確,我得到這個URL http://localhost:8080/myproject/welcome但我想獲得http://localhost:8080/myproject/login並獲得welcome以防萬一登錄是正確的。

1日更新

在我的情況下使用

return "redirect:/login" 

但在此之前我必須添加一個屬性,這樣

model.put("errorlogin", true); 

爲了解決這個問題

的最佳方式
<c:if test="${ errorlogin == true }"> 
<label class="loginerror">Login Error</label> 
</c:if> 

但該錯誤信息不會顯示,而是我得到這個URL

http://localhost:8080/pagesjaunes/login?errorlogin=true 

我設置一個屬性,我得到的參數。

月2日更新

我固定這個問題:

<c:if test="${ param.errorlogin == true }"> 
<label class="loginerror">Login Error</label> 
</c:if> 
+2

查找到POST-REDIRECT-GET。 –

+1

你調試,以確保它實際上擊中'回報「登錄」'一部分? – SergeyB

回答

3

你的形式因此應該有login作爲其行動,並實施這一行動的方法應該重定向到歡迎如果登錄成功的。

@RequestMapping(value = "/login", method = ResquestMethod.POST) 
public String handleLogin([...]) { 
    ... 
    if (successful) { 
     return "redirect:/welcome" 
    } 
} 
+0

我我的情況下,最好是這樣'返回「重定向:/登錄」'但i前必須添加一個屬性這樣'model.put(「errorlogin」,TRUE);'來處理這個'<標籤類= 「loginerror」>登錄錯誤'但錯誤信息這麼想的顯示,而是我得到這個URL通過'http://本地主機:8080/pagesjaunes /登錄? errorlogin = TRUE; – Youssef

+0

更新我的問題:) – Youssef