2010-06-05 42 views
5

Về cơ bản tôi có 2 câu hỏi liên quan đến bộ lọc grails.Câu hỏi về bộ lọc grails

  1. Theo tài liệu grails bạn có thể làm một cái gì đó như dưới đây trong một bộ lọc
if (userId != paramsUserId) { 
    flash.message = "You can only modify yourself" 
    redirect(action: 'list') 
    return false 
} 

Nếu điều kiện trên là đúng thì làm sao sẽ báo cáo kết quả lợi nhuận được thực hiện?

  1. Tôi có thể chuyển hướng trong bộ lọc của mình đến một hành động nào đó cũng có chuyển hướng không?

Trả lời

6

1 - Trả về false từ bộ lọc ngăn chặn các bộ lọc khác (và hành động nếu bộ lọc trong bộ lọc trước) thực thi. Trình duyệt sẽ nhận được chuyển hướng 302 và chuyển đến phương thức 'danh sách' mà bạn đã yêu cầu chuyển hướng đến.

http://grails.org/doc/2.3.7/guide/single.html#filterTypes

2 - yep. chuyển hướng đến cái gì khác mà chuyển hướng là tốt. Nó thực sự không quan trọng đối với trình duyệt. Nếu bạn xem nó trong firebug, bạn sẽ thấy những gì một chuyển hướng thực sự là. Khi bạn chuyển hướng trình duyệt nhận được phản hồi với mã trạng thái HTTP là 302 ("Tìm thấy"), phản hồi này cũng bao gồm url mà trình duyệt sẽ yêu cầu tiếp theo (điều bạn đang chuyển hướng đến, nghĩa là url cho "danh sách" trong ví dụ trên). Trình duyệt sau đó yêu cầu url đó và nó hoạt động như thể đó là yêu cầu đầu tiên.

Đây là lý do tại sao phạm vi flash hữu ích như vậy, mọi thứ trong phạm vi flash trực tiếp cho đến yêu cầu tiếp theo, vì vậy chúng mở rộng chuyển hướng.

+0

Với một số thùng chứa servlet (như Tomcat), bạn phải cẩn thận khi gửi quá nhiều chuyển hướng. – Blacktiger