2016-03-22 1 views
1

Когда я пытаюсь использовать Apache beanUtils для установки свойства date в моем компоненте, он не работает с «No setter method in class». Неверные свойства заданы правильно.Нет метода setter в классе при использовании PropertyUtils.setProperty

Следующий код не с 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 обновить свойства даты и просто вызовите метод установки непосредственно (например 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); 
} 

Любые советы, оцененные.

CapitalAsset боб:

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; 
} 
} 
+2

является '' com.brightgreenstar.entities.CapitalAsset' содержит availableFrom' или его супер класс? –

+1

getter для 'availableFrom' возвращает' String', но setter принимает 'Date', поэтому этот класс нельзя правильно спроектировать, а присвоение не выполняется. –

+0

CapitalAsses available available. Добавлены подробности на мой вопрос. Но, снова глядя на мой код, я думаю, проблема может заключаться в том, что мой получатель не возвращает дату. Я собираюсь изменить это и снова проверить. – greentor

ответ

0

Необходимо включить поглотитель, который возвращает дату:

public Date getAvailableFrom(){ 
    return availableFrom; 
}