2016-10-14 25 views
0

をJSONにHttpServletResponseのを変換します。簡単にそのようになめらかに応答を変換する方法 enter image description hereは、私は次のようexceptionHandlerのを持っている

(プロジェクト内の別のコントローラからの応答私の応答は類似しているべきである。)

{ 
    "timestamp": 1476462787425, 
    "status": 400, 
    "error": "Bad Request", 
    "exception": "org.springframework.http.converter.HttpMessageNotReadableException", 
    "message": "Could not read document: Start date should be before or equal end date\n at [Source: [email protected]; line: 23, column: 16] (through reference chain: com.instinctools.mailtracker.endpoints.dto.QueryFilterDTO[\"startDate\"]); nested exception is com.fasterxml.jackson.databind.JsonMappingException: Start date should be before or equal end date\n at [Source: [email protected]; line: 23, column: 16] (through reference chain: com.instinctools.mailtracker.endpoints.dto.QueryFilterDTO[\"startDate\"])", 
    "path": "/statistics/clicks" 
} 
+0

これは明らかですね。 URLパラメータstartDate> endDate。 – PeterMmm

+1

@PeterMmmあなたは理解できませんでした。私はJava上でバックエンドを書く。例外が発生したときのプロジェクト全体で、その応答はそれに関するjsonの情報です(トピックの例を参照)。しかし、私のExceptionHandler(私のコントローラのために書かれた)は間違ったスタイルの例外(HTMLページ)を持っています。 'response'データをjsonにどのように変換できますか?私は他のコントローラがそのようなjson情報を生成する方法を正確には理解していません。おそらく標準的なspring-bootオプションですか? – Woland

答えて

2

である(適切に注釈付き)ベースErrorオブジェクトを作成します。 UIに返されます。

class Error { 
    private String timestamp; 
    private Integer status; 
    private String error; 
    private String exception; 
    private String message; 
    private String path; 

    //constructors here, whatever 
..... 
} 

はこのようなものを使用してexceptionHandlerのを変更..then:

@ResponseStatus(HttpStatus.BAD_REQUEST) 
@ExceptionHandler(ValueNotAllowedException.class) 
@ResponseBody Error handleBadRequest(HttpServletRequest req, Exception ex) { 
    //Create and return your Error object here. 
    return new Error(/* populate with all the stuff you need here */); 
} 

ホープ、このことができます!

+0

ty、私はあなたのアプローチを理解しています。しかし、それは私が必要とするものではありません。私は、そのようなjsonを生成するためのネイティブ(春のブートで)の方法があると思います。なぜなら、そのエラークラスのようなプロジェクトでは見えないからです...あなたはどう思いますか? – Woland

+0

自分でErrorクラスを作成します。本当に何かに名前を付けることができます。だから、クラスを作成して、エラーのモデルを作成してください。次に、そのオブジェクトにステータス、メッセージ、例外情報などを入力し、それをUIに送信します。 @ResponseBodyアノテーションと、その戻り値の型がErrorオブジェクト自体の仕組みに注意してください。 – Mechkov

+0

Errorクラスは、内部的にJSONオブジェクトに変換されます。 UIの面から、バックエンドからJSONを返すように要求すると、SpringはそのエラーをJSONに変換します。 – Mechkov

関連する問題