【发布时间】:2012-01-24 19:11:20
【问题描述】:
在执行测试用例时,我们在 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 的返回类型是否匹配设置器的参数类型? 在 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.validation.ValidationUtils.rejectIfEmptyOrWhitespace(ValidationUtils.java:182)
【问题讨论】:
-
您确定 IBM RAD IDE 环境已将 User 编译到位?我怀疑它缺少更新的用户。
-
是的,我想是的。你能详细说明“缺少更新的用户”吗..
-
我的意思是,您的 RAD 运行时可能没有使用 securityAnswers 编译用户类。我建议做一个完整的清理和重建。
-
谢谢。我确信他已经编译了,因为相同的代码在部署为应用程序 IDM Websphere 时可以工作。但是,在 RAD IDE 中,测试用例会报告此问题。我想知道这篇文章是否相关..stackoverflow.com/questions/8849042/… ...
标签: spring introspection ibm-jdk