代码之家  ›  专栏  ›  技术社区  ›  Mohamed Thoufeeque

基于父Pojo-Spring验证的公共Pojo-Dynamic错误消息

  •  0
  • Mohamed Thoufeeque  · 技术社区  · 5 年前

    债务人类别

    public class Debtor {
    
             @NotBlank(message = "debtor name is missing")
             @SerializedName("name")
             private String name = null;
    
             @Valid
             @NotNull(message = "debtor account should not be null")
             @SerializedName("account")
             private Account account = null;
          }
    

    债权人类别

    public class Creditor {
    
         @NotBlank(message = "creditor name is missing")
         @SerializedName("name")
         private String name = null;
    
         @Valid
         @NotNull(message = "creditor account should not be null")
         @SerializedName("account")
         private Account account = null;
      }
    

    帐户类别

     public class Account{
    
         @NotBlank(message = "accountno is missing")
         @SerializedName("accountno")
         private String accountno= null;
    
         @NotBlank(message = "accountName is missing")
         @SerializedName("accountName")
         private String accountName = null;
      }
    

    “缺少债务人帐号”
    “缺少债权人帐号”

    0 回复  |  直到 5 年前
        1
  •  0
  •   Cimon    5 年前

    @Component
    public class NameofClass implements Validator {
    
        @Override
        public boolean supports(Class<?> aClass) {
            return DomainClass.class.equals(aClass);
        }
    
        @Override
        public void validate(Object o, Errors errors) {
            //validation code...
            if (o instanceof DomainClass) {
                 // do something...
            }
        }
    }
    
        2
  •  0
  •   Mohamed Thoufeeque    5 年前

    @Override
    protected ResponseEntity<Object> handleMethodArgumentNotValid(MethodArgumentNotValidException ex,
            HttpHeaders headers, HttpStatus status, WebRequest request) {
    
        List<String> errorMessages = new ArrayList<>();
    
        for(FieldError error : ex.getBindingResult().getFieldErrors()) {
            log.info("FieldName : " + error.getField());
            errorMessages = getAllErrorMessages(errorMessages,error.getField(),error.getDefaultMessage());
        }
        return new ResponseEntity<Object>(errorMessages.toString(), HttpStatus.BAD_REQUEST); 
    
     }
    
    private List<String> getAllErrorMessages(List<String> errorMessages, String fieldName, String defaultMessage) {
    
         if(fieldName.contains("Debtor")) {
                    errorMessages.add("Debtor "+ defaultMessage);
         }
         else if(fieldName.contains("Creditor")) {
                errorMessages.add("Creditor "+ defaultMessage);
         }
         else {
                errorMessages.add(defaultMessage);
         }
    }