2011-02-16 28 views
2
多個值的HTTPStatus

我使用Spring註解@ResponseStatus我異常喜歡使用@ResponseStatus

@ResponseStatus(value=HttpStatus.UNAUTHORIZED) 
public class UnauthorizedException extends Exception{ 
} 

問題是,我想拋出同樣的錯誤了許多像HttpStatus.SC_SERVICE_UNAVAILABLE值等。

有沒有什麼辦法在@ResponseStatus中使用多個值?提前致謝。

回答

3

不可以。您不能有多個http狀態碼。檢查http spec

如果你真的要設置在不同的場景不同的狀態代碼(但每反應只有一個狀態碼),然後刪除批註,並通過代碼添加:

public X method(HttpServletResponse response) { 
    if (..) { 
     response.setStatus(..); 
    } else { 
     response.setStatus(..); 
    } 
} 
+0

謝謝。我知道我們在註釋中不能有多個http狀態碼,但有沒有解決方法。 – parbi 2011-02-16 07:03:42

2

唯一的解決方法是想到的是不使用@ResponseStatus註釋。考慮在捕獲相關異常的控制器中編寫自己的錯誤處理代碼,以您喜歡的方式設置錯誤代碼。如果它在幾個控制器中,請考慮編寫攔截器或使用AOP。

1

您可以使用.setStatus()方法在HttpServletResponse類中設置響應代碼,您可以從applicationContext中獲得該方法。

0

爲什麼不創建多個異常類並拋出相應的異常類?