Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.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 SpringMVC中的自定义验证_Java_Spring_Validation - Fatal编程技术网

Java SpringMVC中的自定义验证

Java SpringMVC中的自定义验证,java,spring,validation,Java,Spring,Validation,我想为我的实体实现自定义验证。这是我的实体。事实上,我想验证一个对象,并在它为null时从列表中删除它。 当我运行代码时,会发生此错误。 Bean属性“comment”不可读或具有无效的getter方法:getter的返回类型是否与setter的参数类型匹配 public class TypistData { private List<BasketData> baskets; private DateData orderDate; //getter and setter

我想为我的实体实现自定义验证。这是我的实体。事实上,我想验证一个对象,并在它为null时从列表中删除它。 当我运行代码时,会发生此错误。 Bean属性“comment”不可读或具有无效的getter方法:getter的返回类型是否与setter的参数类型匹配

public class TypistData {
  private List<BasketData> baskets;
  private DateData orderDate;

  //getter and setter
}

public class BasketData {
 private HashedLong id;
 private CustomerData customer;
 private Long discount;
 private String comment;
 private HashedLong region;
 private List<OrderData> orders;

 //getter and setter
}
我的自定义验证是

  public class TypistDataValidation implements Validator {
@Override
public boolean supports(Class<?> aClass) {
    return aClass.isAssignableFrom(TypistData.class);
}

@Override
public void validate(Object o, Errors errors) {
    TypistData typistData = (TypistData)o;
    List<BasketData> basketDatas = typistData.getBaskets();

    if(typistData.getOrderDate()== null
        errors.rejectValue("orderDate","orderDate","can not be null");
    for(BasketData data:basketDatas){
        if(!isEmpty(data)){
            validateBasket(data,errors);
        } else basketDatas.remove(data);
    }
}

private boolean isEmpty(BasketData basketData){
    if(basketData.getCustomer()== null && basketData.getOrders().size()==0
                                       && basketData.getComment()== null
                                       && basketData.getDiscount()==null
                                       && basketData.getRegion()==null)
        return true;
    return false;

}
private void validateBasket(BasketData basketData,Errors errors){
    if(basketData.getRegion() == null)
        errors.rejectValue("region","can not be null");
     if(basketData.getDiscount()== null)
        errors.rejectValue("discount","can not be null");
    if(basketData.getComment() == null)
        errors.rejectValue("comment","can not be null");
    if(basketData.getOrders().size() == 0)
        errors.rejectValue("orders","can not be null");
    if(basketData.getCustomer() == null)
        errors.rejectValue("customer","can not be null"); 
}
}

在BasketData类中,应该有一个用于字段注释的getter方法

public String getComment() {
      return this.comment;
}

如果您的代码可疑,那么您的验证器没有进行验证,而是在修改对象,那么您的验证器应该只进行验证,而不执行任何其他操作。接下来,我希望在这段代码上发生并发修改异常。你什么时候会收到这个错误?发布字段的实际getter/setter。检查getter和setter方法,它们应该与属性注释一致