2012-05-31 88 views
0

我正在開發基於Spring-MVC的應用程序,並且需要在出現錯誤的情況下將錯誤消息顯示在最後 用戶。這是一段代碼我在做使用重定向時丟失的錯誤消息Spring-MVC

GlobalMessages.addErrorMessage(model, "facebook.user.accessDenied"); 
return REDIRECT_PREFIX + "http://localhost:8080/storefront"; 

我在UI中使用標籤來顯示錯誤消息,但似乎使用重定向只是放棄我的錯誤消息。 我是Spring-MVC的新手,不確定我是對還是錯。

,我注意到一個奇怪的是,雖然重定向URL是獲得改變

http://localhost:9001/storefront/?errorKey=facebook.user.accessDenied 

這是addErrorMessage功能的剩餘部分

public static void addErrorMessage(final Model model, final String messageKey) 
    { 
     addMessage(model, ERROR_MESSAGES_HOLDER, messageKey); 
    } 

protected static void addMessage(final Model model, final String messageHolder, final String messageKey) 
    { 
     if (model.containsAttribute(messageHolder)) 
     { 
      final Map<String, Object> modelMap = model.asMap(); 
      final List<String> messageKeys = new ArrayList<String>((List<String>) modelMap.get(messageHolder)); 
      messageKeys.add(messageKey); 
      model.addAttribute(messageHolder, messageKeys); 
     } 
     else 
     { 
      model.addAttribute(messageHolder, Collections.singletonList(messageKey)); 
     } 
    } 

回答

0

我無法理解什麼正是你想在這裏實現。但我想你試圖在控制器級完成驗證後顯示錯誤消息,然後想要再次顯示相同的表單,但是會顯示錯誤消息。

我也混淆了你的REDIRECT_PREFIX變量。它的價值是什麼? 如果您使用「重定向:」作爲它的值,那就是問題所在。當您重定向到其他視圖時,您附加到模型屬性的錯誤消息將不會顯示在窗體中。您只需指定顯示錶單的視圖名稱,spring將自動顯示與您的模型屬性綁定的錯誤。

希望這可以幫助你。乾杯。

+0

是的你是正確的'REDIRECT_PREFIX =重定向'。我有同樣的猜測失去value.Is有任何方法來保持這一點,同時使用'重定向' –

+0

不,你不應該使用重定向,因爲它不會保留你的模型和BindingResult對象。當你重定向時,它會調用映射請求映射的控制器作爲你的url。 –

+0

我的問題是我必須發回用戶到他/她從哪裏來的相同的位置和使用簡單的視圖不可能根據底層的框架結構:( –