當我的服務器收到不完整的xml時,由於java.lang.IllegalArgumentException
的默認處理,它返回500 Internal Server Error
。我可以覆蓋返回的HTML頁面,但我也需要覆蓋錯誤代碼,並使其符合我們的文檔規範400
。有沒有辦法覆蓋JSF-2.0
中的錯誤代碼?我們使用JAXB
來處理xml
。將http 500錯誤重定向到400
0
A
回答
0
取決於它被拋出的位置,以及它是否被另一個異常包裹。根據迄今提供的信息很難給出完美的答案。
但是,要使用JSF2發送具有正確狀態的響應錯誤,請使用ExternalContext#responseSendError()
。例如。
try {
// ... ???
} catch (IllegalArgumentException e) {
externalContext.responseSendError(400, e.getMessage());
e.printStackTrace(); // Or use logger.
}
或等價於一個servlet filter,使用HttpServletResponse#sendError()
try {
// ... ???
} catch (IllegalArgumentException e) {
response.sendError(400, e.getMessage());
e.printStackTrace(); // Or use logger.
}
1
最後我用一個ExceptionMapper像這樣:
@Provider
public class ClassCastExceptionMapper implements ExceptionMapper<java.lang.ClassCastException> {
@Override
public Response toResponse(java.lang.ClassCastException arg0) {
return Response.status(Response.Status.BAD_REQUEST).build();
}
}
+0
令人困惑。這是與JSF完全無關的JAX-RS API。到底什麼是你現在遇到的問題?處理由JSF Web前端反過來使用的JAX-RS webservice的異常? – BalusC
相關問題
- 1. 響應重定向URL返回HTTP錯誤400 - 錯誤請求
- 2. HTTP 400和500錯誤信息
- 3. 爲什麼Localhost在重定向時收到HTTP 500錯誤?
- 4. 重定向到路由結果'HTTP 500錯誤'laravel
- 5. 如何在將HTTP重定向到HTTPS時處理Nginx中的400錯誤
- 6. HTTP 500重定向到相同的jsp
- 7. Apache https重定向導致400錯誤
- 8. htaccess的重定向導致500錯誤
- 9. mvc3從視圖重定向和從部分重定向導致http 500錯誤
- 10. Akka HTTP重定向錯誤
- 11. VOLLEY 500和400錯誤
- 12. 如何將AppEngine 500錯誤重定向到其他位置?
- 13. 自定義400-401-403-404-500錯誤
- 14. Apache重定向http到https太多重定向錯誤
- 15. 錯誤500簡單htaccess重定向
- 16. HTTP錯誤500?
- 17. 將HTTPS重定向到HTTP
- 18. HTTP POST 400錯誤
- 19. IE7 HTTP錯誤400
- 20. 當發生錯誤時,將響應重定向到HTTP 500錯誤處理程序
- 21. 將http重定向到https並將www重定向到非www
- 22. HTTP 500,customErrors重定向不起作用
- 23. HTTP錯誤500/t_variable錯誤
- 24. 將過期的HTTP重定向到HTTP
- 25. 無法將http重定向到http
- 26. 使用web.config將HTTP重定向到HTTP
- 27. 使用.htaccess將HTTP重定向到HTTP
- 28. 將http重定向到https(https將http重定向到默認值)
- 29. 主機重定向400錯誤網頁無法找到
- 30. Sentrifugo,500 HTTP錯誤
我只是通過我們的過濾器加強和異常心不是被扔其中一個,但是被我們的頂級JAXB類中的空構造函數拋出,該類用於基於傳入的xml實例化其他類。 – Ryland
這裏的答案http://stackoverflow.com/questions/3293599/jax-rs-using-exception-mappers/3356277#3356277最終解決了它對我來說。我剛剛添加了一個ExceptionMapper,它捕獲了正確的類型並返回了400錯誤。 – Ryland