4
我玩耍和轉換的Spring MVC的REST項目中使用新澤西州,並與抓SAXNotRecognizedException
@ExceptionHandler(HttpMessageNotReadableException.class)
註解我班的一個,這將趕上去過程中的任何異常都有一個方法XML消息的序列化。通過這種方式,我可以檢測到用戶在POST請求中發送錯誤的XML時返回XML錯誤響應,而不是400/500標準HTML錯誤頁面。
澤西島有類似的東西嗎?我試圖創建一個異常映射類
@Provider
public class HttpMessageNotReadableException
implements ExceptionMapper<org.xml.sax.SAXNotRecognizedException> {
,但似乎並沒有趕上任何前途的錯誤,只是當我拋出異常從資源類中。
因此,我認爲有我的方法獲取字符串,並做反序列化和捕捉任何錯誤:
@POST
@Path("/product")
public Response createProduct(String createRequest) {
try {
// de-serialize
// do work ...
} catch ...
代替
@POST
@Path("/product")
public Response createProduct(CreateProduct createRequest) {
// do work ...
,但似乎並不正確,只是會用相同的錯誤檢查來污染我所有的課程。
我也看了有關使用
@Provider
class MyXmlReader implements MessageBodyReader {
實現我自己的讀者但這似乎只是重新發明輪子,因爲JAXB已經在做反序列化,我只是想捕獲錯誤。
任何人都知道是否有更好的方法來捕捉不良的傳入XML?
它應該與ExceptionMapper一起使用。你能添加你得到的異常堆棧跟蹤嗎? –