Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 自定义错误消息中的Dropwizard绑定字段名称_Java_Api_Dropwizard - Fatal编程技术网

Java 自定义错误消息中的Dropwizard绑定字段名称

Java 自定义错误消息中的Dropwizard绑定字段名称,java,api,dropwizard,Java,Api,Dropwizard,如何将传入请求的字段名绑定到以下格式的适当错误消息field1应该引用@JsonProperty(“field1”)的内容,而不是绑定到具有以下格式的路径Resource.method.arg0.field1 预期产量 { "errors": [ { "field": "field1", "message": "error message" } ] } 我有以下ConstraintExceptionMapper,但这似乎是错误的方法。是否有合适的

如何将传入请求的字段名绑定到以下格式的适当错误消息
field1
应该引用
@JsonProperty(“field1”)
的内容,而不是绑定到具有以下格式的路径
Resource.method.arg0.field1

预期产量

{
  "errors": [
    {
      "field": "field1",
      "message": "error message"
    }
  ]
}
我有以下ConstraintExceptionMapper,但这似乎是错误的方法。是否有合适的替代方案允许我继续使用javax验证,但将
@QueryParam(“productCode”)
的值绑定到自定义错误对象

    public class CustomConstraintViolationExceptionMapper implements ExceptionMapper<JerseyViolationException> {

    @Override
    public Response toResponse(JerseyViolationException exception) {
        List<ValidationError> validationErrors = constraintViolationToValidationErrors(exception);
        final Invocable invocable = exception.getInvocable();
        final int status = determineStatus(exception.getConstraintViolations(), invocable);
        List<Error> errors =
                validationErrors.stream()
                        .map((e) -> new Error(e.getPath(), e.getMessage()))
                        .collect(Collectors.toList());
        return Response.status(status).entity(new Errors(errors)).build();
    }

    private String getFieldName(String path) {
        return path.substring(path.lastIndexOf(".") + 1, path.length());
    }

}
public class RequestObject {

    @JsonProperty
    @NotEmpty(message = "field1 is a required parameter")
    private final String field1;

    @JsonCreator
    public FutureTradeDateParams(@QueryParam("field1") String field1) {
        this.field1 = field1;
    }

    @JsonProperty("field1")
    public String getField1() {
        return field1;
    }

}