Когда я пытаюсь использовать 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;
}
}
является '' com.brightgreenstar.entities.CapitalAsset' содержит availableFrom' или его супер класс? –
getter для 'availableFrom' возвращает' String', но setter принимает 'Date', поэтому этот класс нельзя правильно спроектировать, а присвоение не выполняется. –
CapitalAsses available available. Добавлены подробности на мой вопрос. Но, снова глядя на мой код, я думаю, проблема может заключаться в том, что мой получатель не возвращает дату. Я собираюсь изменить это и снова проверить. – greentor