2009-09-15 21 views
51

Tôi có một bộ điều khiển cần trả lại trang 404 và mã trạng thái trên một số điều kiện nhất định. Tôi không thể tìm ra cách để làm điều này trong Grails. Một đồng nghiệp đã đề xuất phương pháp này:Làm cách nào để tôi trả lại mã trạng thái 404/50x từ Bộ điều khiển Grails?

response.sendError(HttpServletResponse.SC_NOT_FOUND) 

hoạt động hoàn toàn tốt, nhưng không giống như Grails. Tôi biết phương thức render của Rails lấy một đối số trạng thái, nhưng việc render của Grails không có chức năng như vậy. Có cái gì tôi đang mất tích, cách tốt nhất để thực hiện điều này là gì?

Trả lời

48

Đặt trạng thái phản hồi bằng tuyên bố của chính nó là đủ tốt. Nó không quá xấu xí và khá đơn giản:

response.status = 404; 

Tôi đã tự sử dụng thành công bản thân mình và have seen others do it this way. Vì nó chỉ là một setter, bạn cũng có thể làm những thứ khác sau khi thiết lập trạng thái. Bất kỳ trạng thái nào bạn đặt cuối cùng sẽ là những gì HttpServletResponse sử dụng khi nó thực sự gửi phản hồi lại cho máy khách.

+0

Liên kết đến bài viết IBM không còn hoạt động. –

+1

@ Al-Punk Cố định, cảm ơn những người đứng đầu. –

8

response.sendErrorresponse.setStatus là hai cách duy nhất tôi biết. Nếu bạn static import HttpServletResponse, thì đó không phải là 'không giống như grails'.

42

response.sendError(404) sẽ hoạt động với Grails UrlMappings trong khi response.status = 404 không vì lý do nào. Điều này hữu ích nếu bạn muốn hiển thị trang lỗi 404 tùy chỉnh, thay vì chỉ gửi 404 trở lại trình duyệt.

Các vấn đề liên quan