2012-06-26 55 views
0

大部分的春季教程和示例都向您展示瞭如何從資源文件中獲取消息以及如何在視圖(jsp)中顯示消息,但不知道如何在控制器和視圖之間處理這些消息。我應該如何在spring mvc的控制器中發送resourcebundle消息?

這裏是一個例子,即時消息如何現在我有一個視圖/控制器處理被遺忘的密碼。當發送密碼,我重定向回登錄屏幕與消息「您的密碼發送......」

@RequestMapping(value="/forgottenpassword") 
public String forgottenpassword(@RequestParam String email) { 
    ....something something 
    if(email != null){ 
     return "redirect:/login?forgottenpassword=ok"; 
    } 
} 

@RequestMapping(value="/login") 
public String login(HttpServletRequest request) { 
    if(request.getParameter("forgottenpassword") != null && request.getParameter("forgottenpassword").equals("ok")) { 
     data.put("ok_forgottenpassword", "forgottenpassword.ok"); 
    } 

    return "login"; 
} 

Finaly我在視圖中顯示的消息,在這種情況下,Freemarker模板

<#if (ok_forgottenpassword?exists)> 
    <div class="alert alert-success"><@spring.message "${ok_forgottenpassword}" /></div> 
</#if> 

這是在Spring框架中完成它的最好方法嗎?只有1種消息很簡單,但如果我需要5種消息呢?

回答

0

只需創建一個簡單的bean並將其推送到數據。在這個bean中,你可以擁有你想要從資源包中加載的所有消息。 (順便說一句:你真的需要的資源包它做了一些花哨的技巧,這是完全不必要的,除非你需要國際化一個簡單的屬性文件就足夠了在幾乎所有其他情況下?。)

0

添加錯誤到列表控制器一樣

List<String> errorsList = new ArrayList<String>(); 
errorsList.add("error.invalid.username"); 
errorsList.add("error.invalid.password"); 
errorsList.add("error.invalid.passwordResetLinkSent"); 
..... 

然後在JSP頁面中遍歷所有錯誤,顯示一個類似

<c:if test="${!empty errorsList}"> 
    <ul> 
    <c:forEach var="error" items="${errorsList}"> 
     <li><spring:message message="${error}"></spring:message></li> 
    </c:forEach> 
    </ul> 
    </c:if> 
+0

不幸的是,這不是問題所在 – Tommy

相關問題