テスト ケースの実行中に、IBM RAD IDE 環境 (ランタイム JRE として IBM JDK 1.6) で問題が発生しました。同じコードが Springsource IDE (ランタイム JRE として Sun JDK 1.6) で正常に動作しています。それはJDKの問題ですか、それともSpringフレームワークの問題ですか。簡単なコード履歴: 以下のような Java Bean があります。
class User {
final Map<Integer,String> securityQuestions = Collections.synchronizedMap(new HashMap<Integer,String>(MAX_SECURITY_QUESTIONS));
final Map<Integer,String> securityAnswers = Collections.synchronizedMap(new HashMap<Integer,String>(MAX_SECURITY_QUESTIONS));
public Map<Integer,String> getSecurityAnswers() {
return securityAnswers;
}
public void setSecurityAnswer(Integer answerNumber, String answerText) {
securityAnswers.put(answerNumber, answerText);
}
}
を使用して「securityAnswers」を検証しようとしているとき
ValidationUtils.rejectIfEmptyOrWhitespace(errors, "securityAnswers", "seqQans.obj.required","security Question list cannot be empty");
この例外が発生しています。
原因: org.springframework.beans.NotReadablePropertyException: Bean クラス [ユーザー] の無効なプロパティ 'securityAnswers': Bean プロパティ 'securityAnswers' が読み取れないか、無効なゲッター メソッドがあります: ゲッターの戻り値の型がパラメーターの型と一致しますか?セッター?org.springframework.beans.BeanWrapperImpl.getPropertyValue(BeanWrapperImpl.java:705) で org.springframework.beans.BeanWrapperImpl.getPropertyValue(BeanWrapperImpl.java:697) で org.springframework.validation.AbstractPropertyBindingResult.getActualFieldValue(AbstractPropertyBindingResult.java:99) ) org.springframework.validation.AbstractBindingResult.getFieldValue(AbstractBindingResult.java:226) で org.springframework.validation.ValidationUtils.rejectIfEmptyOrWhitespace(ValidationUtils.java:224) で org.springframework.