我正在使用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();
}
}
您可以选择更合适的响应来返回。