1
Apache beanUtilsを使用してBeanの日付プロパティを設定しようとすると、「クラス内にsetterメソッドがありません」というエラーが発生します。日付以外のプロパティが正しく設定されています。PropertyUtils.setPropertyを使用しているときにクラス内にセッターメソッドがありません
私は日付のプロパティを更新し、ちょうどそれが正常に動作します(例えばasset.setAvailableFrom
)直接セッターを呼び出すためにPropertyUtilsを使用しない場合は、次のコードは、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を使用することを好むでしょう。
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'またはそのスーパークラスが含まれている'のですか? –
'availableFrom'のgetterは' String'を返しますが、setterは 'Date'を受け入れます。したがって、このクラスは正しくイントロスペクトされず、代入は失敗します。 –
CapitalAssetにavailableFromが含まれています。私の質問に詳細を追加しました。しかし、私のコードをもう一度見れば、私のゲッターが日付を返さないことが問題だと思う。私はそれを変更して再びテストするつもりです。 – greentor