2010-02-10 39 views
11

Trong bộ điều khiển, tôi thực hiện kiểm tra quyền để xem liệu người dùng có thể thực hiện hành động nào đó không. Nếu họ không thể, tôi muốn trả lại 404.Spring MVC 3 - Trả lời yêu cầu với 404?

Làm cách nào để yêu cầu Spring trả về 404?

+5

Xem http://stackoverflow.com/questions/2066946/trigger-404-in-spring-mvc-controller – axtavt

+0

@axtavt Câu trả lời trên trang này là những gì tôi đã sử dụng. Cảm ơn – Kyle

+2

Bạn thực sự nên phản hồi với 403 .. –

Trả lời

21

Bạn có thể ném một ngoại lệ và xử lý nó trong một phương pháp điều khiển cấp:

@Controller 
public class MyController { 

    @ResponseStatus(NOT_FOUND) 
    @ExceptionHandler({UnauthorizedException.class}) 
    public void handle() { 
     // ... 
    } 
} 

Nếu bất kỳ phương thức điều khiển ném một số UnauthorizedException., phương thức xử lý trên sẽ được gọi để xử lý và trả về lỗi 404.

+0

Cách thực sự khéo léo để xử lý việc này. –

+2

Trên phiên bản mới hơn của Spring, bạn chỉ có thể ném NoSuchRequestHandlingMethodException trong bộ điều khiển của bạn Tôi nhận xét ở đây vì nó vẫn xuất hiện trong trang đầu tiên của google – autra

-3

Bạn có thể lấy được ngoại trừ của bạn từ HttpException và đường dẫn 404 mã để xây dựng cơ sở:

public class MyNotFoundException : HttpException 
{ 
    public MyNotFoundException(string message, Exception inner) 
     : base(404, message, inner) 
    { 
    } 
} 
+0

Tôi đoán đó là Spring.NET - không có lớp 'HttpException' trong Spring. – skaffman

+0

Cú pháp đó để gọi hàm tạo siêu lớp là C#. – jjmontes

+0

là phần mở rộng (:) cũng như – Panthro

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