使用 PropertyUtils.setProperty 时 class 中没有 setter 方法

No setter method in class when using PropertyUtils.setProperty

当我尝试使用 Apache beanUtils 在我的 bean 中设置日期 属性 时,它失败并显示 "No setter method in class"。非日期属性设置正确。

以下代码失败 Property 'availableFrom' has no setter method in class 'class com.brightgreenstar.entities.CapitalAsset'

if (value instanceof String){
    if ((key.equals("lastUpdatedDate")) || (key.equals("availableFrom")) || (key.equals("availableTo"))|| (key.equals("purchaseDate"))) {
        DateFormat df = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss ZZZZ");
        Date date = df.parse((String)value);
        PropertyUtils.setProperty(asset,key,date);
      // PropertyUtils.setSimpleProperty(asset,key,value); // Also fails for dates
    }else{
        PropertyUtils.setSimpleProperty(asset,key,value);
    }
} else{
      PropertyUtils.setSimpleProperty(asset,key,value);
}

如果我不使用 PropertyUtils 来更新日期属性而只是直接调用 setter(例如 asset.setAvailableFrom),那么它工作正常。这对我来说是可行的解决方案,但我更愿意使用 PropertyUtils。

if (value instanceof String){
   if ((key.equals("lastUpdatedDate")) || (key.equals("availableFrom")) || (key.equals("availableTo"))|| (key.equals("purchaseDate"))) {
        DateFormat df = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss ZZZZ");
        Date date = df.parse((String)value);
        if (key.equals("availableFrom")){
            asset.setAvailableFrom(date); // This works
        }
    }else{
       PropertyUtils.setSimpleProperty(asset,key,value);
    }
}else{
   PropertyUtils.setSimpleProperty(asset,key,value);
}

感谢任何建议。

资本资产 bean:

public class CapitalAsset {

private Date availableFrom;
private Date availableTo;
public String getAvailableFrom(){
    try {
        DateFormat df = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss z");
        return df.format(availableFrom);
    } catch (Exception e) {
        return "";
    }
}

public void setAvailableFrom(Date availableFrom) {
    this.availableFrom = availableFrom;
}

public String getAvailableTo(){
    try {
        DateFormat df = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss z");
        return df.format(availableTo);
    } catch (Exception e) {
        return "";
    }
}

public void setAvailableTo(Date availableTo) {
    this.availableTo = availableTo;
}
}

需要包含 getter returns 日期:

    public Date getAvailableFrom(){
    return availableFrom;
}