Quarkus/JAX-RS:可能得到更好的数据绑定错误?



我目前正在使用JSON-B开发Quarkus应用程序,我正在做以下事情:

public class Something {
public enum Choice { X, Y, Z }
private Choice a;
private Choice b;
private Choice c;
// getters and setters omitted
}
@Path("/test")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public class TestResource {
@POST
public Response post(@Valid Something something) {
return Response.ok().build();
}
}

下面的请求正确地导致了一个异常:

POST http://localhost:8080/test
Content-Type: application/json
Accept: application/json
{
"a": "X",
"b": "TEST",
"c": "TEST2"
}
javax.ws.rs.ProcessingException: RESTEASY008200: JSON Binding deserialization error: javax.json.bind.JsonbException: Internal error: No enum constant com.example.Something.Choice.TEST

这样做的问题是,当第一次数据类型转换失败时,会抛出JsonbException。从验证和响应的角度来看,我不太喜欢这个,因为我宁愿知道每个无效的属性(b和c)。

是否有办法让JSON-B反序列化报告多个错误?

不幸的是,没有办法得到更好的错误消息。