2017-03-22 6 views
0

不正な応答の応答で検証注釈メッセージを返すことは可能ですか?私はこれが可能だと思ったが、私たちのプロジェクトに詳細な悪い要求メッセージが与えられていないことに気づいた。ジャージー検証 - 不正な要求に対する検証メッセージを返す

@NotNull(message="idField is required") 
@Size(min = 1, max = 15) 
private String idField; 

idFieldが欠落しているリクエストがあった場合は、「idField is required」が返されます。私はジャージー2.0を使用しています。私は応答を見ていると、これは...

{ 
    "timestamp": 1490216419752, 
    "status": 400, 
    "error": "Bad Request", 
    "message": "Bad Request", 
    "path": "/api/test" 
} 
+0

バリデータの設定方法を示す必要があります。 – davidxxx

答えて

2

は、それはあなたのExceptionMappersの一つで翻訳されて、あなたの豆の検証例外(ConstraintViolationException)のように見えています。以下に示すようにConstraintViolationExceptionExceptionMapperを登録し、必要な形式でデータを返すことができます。 ConstraintViolationExceptionにはあなたが探しているすべての情報があります。

@Singleton 
@Provider 
public class ConstraintViolationMapper implements ExceptionMapper<ConstraintViolationException> { 

    @Override 
    public Response toResponse(ConstraintViolationException e) { 
    // There can be multiple constraint Violations 
    Set<ConstraintViolation<?>> violations = e.getConstraintViolations(); 
    List<String> messages = new ArrayList<>(); 
    for (ConstraintViolation<?> violation : violations) { 
     messages.add(violation.getMessage()); // this is the message you are actually looking for 

    } 
    return Response.status(Status.BAD_REQUEST).entity(messages).build(); 
    } 

} 
+0

カスタム制約バリデータ内には、違反している各制約に対して複数のメッセージを追加する方法がありますか? –

関連する問題