返回错误列表

问题描述 投票:1回答:1

我想使用此Response对象返回错误列表:

public class StringResponseDTO {

    private String response;

    public StringResponseDTO(String response) {
        super();
        this.response = response;
    }

    public String getResponse() {
        return response;
    }

    public void setResponse(String response) {
        this.response = response;
    }
}

我使用此代码生成错误:

List<FieldError> errors = result.getFieldErrors();
        for (FieldError error : errors ) {
          System.out.println ("Validation error in field: " + error.getObjectName() 
                          + "! Validation error message: " + error.getDefaultMessage() 
                          + "! Rejected value:" + error.getRejectedValue());
          return ResponseEntity.ok(new StringResponseDTO(error.getField() + " " + error.getDefaultMessage()));
        }

我想返回一个这样的列表:

response: {
   errors: [
      field_name: message,
      second_name: second_message
           ]
}

你知道我怎么修改代码吗?可能我需要添加构造函数?

java spring-restcontroller spring-rest
1个回答
1
投票
response: {
   errors: [
      field_name: message,
      second_name: second_message
           ]
}

您需要使用以下类来模拟上面的json:

@JsonTypeInfo(include = JsonTypeInfo.As.WRAPPER_OBJECT, use = JsonTypeInfo.Id.NAME)
@JsonTypeName("response")
class StringResponseDTO {

    private List<String> errors;

    public StringResponseDTO(final List<String> errors) {
        this.errors = errors;
    }

    public List<String> getErrors() {
        return errors;
    }

    public void setErrors(final List<String> errors) {
        this.errors = errors;
    }
}

您可以将响应构造为:

List<String> errorsList = new ArrayList<>();
List<FieldError> errors = result.getFieldErrors();
for (FieldError error : errors ) {
     System.out.println ("Validation error in field: " + error.getObjectName() 
                     + "! Validation error message: " + error.getDefaultMessage() 
                     + "! Rejected value:" + error.getRejectedValue());
          errorsList.add(error.getField() + " " + error.getDefaultMessage());
}

return ResponseEntity.badRequest().body(new StringResponseDTO(errorsList));
© www.soinside.com 2019 - 2024. All rights reserved.