2011-06-21 40 views
0

我正在第一次使用Spring的註釋,並且在後續的@RequestMapping命中時,URL出現了一些問題。我有下面的代碼片段: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 /登錄

對myApp /登錄/ ?重試的userName = &密碼=

對myApp /登錄/註冊// < - 失敗,因爲它不應該是嵌套登錄

很顯然,我做錯了什麼。我的問題是:

1.)我能做些什麼來防止參數在URL中出現,當它重試?編輯:刪除這個問題 - found the answer

2.)爲什麼它開始嵌套登錄和什麼是正確的方式來聲明?

任何想法或援助,將不勝感激。謝謝!

回答

2

可能是因爲您在login視圖中使用相對URL作爲action表單的屬性。因爲含有這種形式的頁面可以因應不同的URL顯示,您需要使用絕對路徑,這樣的事情:

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

正是我需要的,謝謝! – Riggy