@Valid注释对REST服务发送异常



我正在使用REST 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数据(例如,预期为字符串,我发送数字数据(然后给它抛出异常。

如何获得发送错误消息而不是抛出异常(具体来说,我想发送错误消息(?

您需要编写 javax.ws.rs.ext.provider 来实现 javax.ws.rs.rs.rs.ext.except.exceptionmapper

例如,通用ValidationExceptionMapper看起来像:

@Provider
public class ValidationExceptionMapper
                    implements ExceptionMapper<ValidationException> {
    public Response toResponse(ValidationException e) {
        return Response.status(BAD_REQUEST).build();
    }
}

您可以选择更合适的响应来返回。

相关内容

最新更新