2010-01-18 30 views
6

Tôi đã thấy rằng tôi có thể thêm lỗi và hiển thị chúng qua các phương thức <form:errors />addError() của lớp BindingResult, nhưng tôi tự hỏi có điều gì đó tương tự như gửi thông báo thông tin đến JSP hay không.Thêm tin nhắn với Spring

Ý tôi là, tôi muốn thêm thư khi thao tác đã thành công. Tôi biết tôi có thể làm điều đó bằng cách gửi một lỗi, nhưng nó sẽ không có ý nghĩa với tôi để thêm lỗi khi không có bất kỳ lỗi nào cả.

+0

Cảm ơn bạn đã an toàn. Như tôi thấy không có bất kỳ Mảng tiêu chuẩn nào vì nó tồn tại chẳng hạn như trong Struts. Tôi đã xem xét lựa chọn mà cả hai bạn đã đề xuất mặc dù tôi có nghi ngờ nếu có bất kỳ tính năng đặc biệt nào trong Mùa Xuân có thể quản lý điều này. – Javi

Trả lời

2

Thú vị. Tôi thấy điều này trong một dự án cũ của tôi .:

(đây là một bộ điều khiển cơ bản, nhưng cũng có thể là một phương pháp hữu ích)

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); 
} 

và sau đó trong một messages.jsp đó đã được đưa vào tất cả các trang tôi đã :

<c:forEach items="${messages}" var="message"> 
    //display messages here 
</c:forEach> 

MESSAGES_KEY là hằng số của tôi với giá trị "thông điệp" (để sau này có thể truy cập trong vòng lặp forEach).

Lớp Message là POJO đơn giản với hai thuộc tính đó. Tôi đã sử dụng nó cho tin nhắn thông tin cũng như cho các lỗi không xác thực tùy chỉnh.

Đây là giải pháp khá tùy chỉnh, nhưng có lẽ tôi đã không tìm thấy giải pháp tích hợp sẵn. Google một chút trước khi sử dụng một giải pháp như vậy.

4

Tại sao bạn không chỉ thêm tin nhắn làm thuộc tính của mô hình được chuyển tới chế độ xem. Trong JSP của bạn, bạn sẽ kiểm tra xem chúng không phải là null hay không, và nếu không, hãy hiển thị chúng.

+1

Vâng, chỉ có thuộc tính "thông điệp" mà bạn tìm kiếm làm tiêu chuẩn. – cjstehno

1

Sử dụng nội dung nào đó như tin nhắn Flash trong Rails.

Phần khó khăn là giữ thư trong chuyển hướng sau bài đăng. I E. bạn gửi biểu mẫu và bạn chuyển hướng đến một trang khác hiển thị thông báo cho bạn biết rằng bạn đã thành công trong hành động của mình.

Rõ ràng là bạn không thể giữ thư trong yêu cầu bởi vì nó sẽ bị mất sau khi chuyển hướng.

Giải pháp của tôi bao gồm trong việc giữ đậu phạm vi phiên có chứa văn bản tin nhắn và loại văn bản (thông báo, cảnh báo hoặc lỗi). Lần đầu tiên bạn đọc nó trong một JSP bạn phải xóa nó để tránh hiển thị nó nhiều hơn một lần.