2017-06-02 39 views
0

我在其余Web服务中使用自定义验证。@无效注释发送异常以响应休息服务

@PUT 
    @Path("/{accountId}") 
    @Consumes({MediaType.APPLICATION_JSON}) 
    public Response update(
      @NotNull @ValidUUID @PathParam("accountId") UUID accUUID, 
      @NotNull @Valid Account changedAcc) { 
     synchronized (LOCK_MANAGER.getLock(accUUID)) { 
      return accHelper.update(this.getCurrentUser(), accUUID, changedAcc); 
     } 
    } 

这里是我的账户类一瞥

@Table(keyspace = "Randomss", name = "accounts") 
public class Account { 

    @PartitionKey 
    @Column(name = "id") 
    @JsonIgnore 
    private UUID id; 

    @Column(name = "acc_type") 
    @NotNull 
    @ValidString 
    @JsonIgnore 
    private String accType; 

现在我JSON数据发送到这个Web服务更新帐户, 但如果我把一些错误的JSON数据 (如acc_type预期作为字符串,我发送数字数据) 然后它会引发异常。

如何让它发送错误信息而不是抛出异常 (具体而言,我想发送错误信息)?

回答

0

你需要写一个javax.ws.rs.ext.Provider实现的javax.ws.rs.ext.ExceptionMapper

例如通用ValidationExceptionMapper可能看起来像:

@Provider 
public class ValidationExceptionMapper 
        implements ExceptionMapper<ValidationException> { 

    public Response toResponse(ValidationException e) { 
     return Response.status(BAD_REQUEST).build(); 
    } 

} 

你可以选择一个更适当的响应返回。

相关问题