我看到我可以添加錯誤並通過<form:errors />
標記和addError()
方法對BindingResult
類進行呈現,但我不知道是否有類似的東西向JSP發送信息消息。用Spring添加郵件
我的意思是,我想在操作成功時添加消息。我知道我可以通過發送一個錯誤來做到這一點,但是如果在沒有任何錯誤的情況下添加錯誤是沒有意義的。
我看到我可以添加錯誤並通過<form:errors />
標記和addError()
方法對BindingResult
類進行呈現,但我不知道是否有類似的東西向JSP發送信息消息。用Spring添加郵件
我的意思是,我想在操作成功時添加消息。我知道我可以通過發送一個錯誤來做到這一點,但是如果在沒有任何錯誤的情況下添加錯誤是沒有意義的。
有趣。我發現這個礦:一個老項目
(這是一個基本的控制器,但也不失爲一種實用方法)
protected void addMessage(String key, boolean isError,
HttpServletRequest request, Object... args) {
List<Message> msgs = (List<Message>) request.getAttribute(MESSAGES_KEY);
if (msgs == null) {
msgs = new LinkedList<Message>();
}
Message msg = new Message();
msg.setMessage(msg(key, args));
msg.setError(isError);
msgs.add(msg);
request.setAttribute(MESSAGES_KEY, msgs);
}
,然後在其中包含在所有的網頁我有一個messages.jsp
:
<c:forEach items="${messages}" var="message">
//display messages here
</c:forEach>
MESSAGES_KEY
是具有值「消息」我的一個常數(以便它是後來在foreach循環訪問)。
Message
類是一個簡單的POJO與這兩個屬性。我用它的信息消息以及自定義的非驗證錯誤。
這是一個相當自定義的解決方案,但也許我沒有找到內置的解決方案。谷歌在使用這種解決方案之前多一點。
爲什麼不只是將消息添加爲傳遞給視圖的模型的屬性。在您的JSP中,您將檢查它們是否爲空,如果不是,則顯示它們。
是的,只是有一個「消息」屬性,你看作爲一個標準。 – cjstehno 2010-01-18 14:56:12
在Rails中使用類似Flash的消息。
困難的部分是保留郵件在郵政後重定向。即您提交表單,然後您重定向到另一個頁面,該頁面會顯示一條消息,通知您已成功完成了您的操作。
很明顯,您無法在請求中保留該消息,因爲它在重定向後會丟失。
我的解決方案是保留一個會話範圍的bean,其中包含消息文本及其類型(通知,警告或錯誤)。您第一次在JSP中閱讀它時,必須清除它以避免多次顯示它。
感謝anwersd。正如我所看到的,沒有任何標準數組,因爲它存在於例如Struts中。我已經考慮過你們提出的選擇,儘管我懷疑Spring是否有任何特殊功能可以解決這個問題。 – Javi 2010-01-18 17:25:55