Spring验证问题

时间:2012-01-24 19:11:20

标签: spring introspection ibm-jdk

在执行测试用例时,我们在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)

1 个答案:

答案 0 :(得分:0)

抱歉!但我不相信RAD与此有任何关系。例外清楚地说明了为什么会发生这种情况:

  

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

答案是否定的:)