0

在执行测试用例时,我们在 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.ValidationUtils.rejectIfEmptyOrWhitespace(ValidationUtils.java:224) 在 org.springframework 的 org.springframework.validation.AbstractBindingResult.getFieldValue(AbstractBindingResult.java:226)。

4

1 回答 1

0

对不起 !但我不相信 RAD 与此有关。异常清楚地说明了发生这种情况的原因:

getter 的返回类型是否与 setter 的参数类型匹配?

答案是否定的:)

于 2012-01-24T19:50:41.950 回答