在执行测试用例时,我们在IBM RAD IDE环境(IBM JDK 1.6作为运行时JRE)中遇到了问题。使用Springsource IDE(Sun JDK 1.6作为运行时JRE)运行相同的代码。这是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类[User]的无效属性'securityAnswers':Bean属性'securityAnswers'不可读或具有无效的getter方法:getter的返回类型是否与setter的参数类型? 在org.springframework.beans.BeanWrapperImpl.getPropertyValue(BeanWrapperImpl.java:705) 在org.springframework.beans.BeanWrapperImpl.getPropertyValue(BeanWrapperImpl.java:697) at 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.validation.ValidationUtils.rejectIfEmptyOrWhitespace(ValidationUtils.java:182)
答案 0 :(得分:0)
抱歉!但我不相信RAD与此有任何关系。例外清楚地说明了为什么会发生这种情况:
getter的返回类型是否与setter的参数类型匹配?
答案是否定的:)