2012-01-24 86 views
0

在執行測試用例時,我們正面臨IBM RAD IDE環境(IBM JDK 1.6作爲運行時JRE)中的一個問題。 Springsource IDE(Sun JDK 1.6作爲運行時JRE)使用相同的代碼。這是JDK還是Spring框架的問題。 簡要歷史記錄碼: 有一個Java bean如下Spring驗證問題

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); 
     } 
    } 

當我們正在嘗試使用

ValidationUtils.rejectIfEmptyOrWhitespace(errors, "securityAnswers", "seqQans.obj.required","security Question list cannot be empty"); 

我們得到此異常驗證「securityAnswers」。

引起: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) 在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

你確定IBM RAD IDE環境已經到位編譯的用戶?我懷疑它缺少更新的用戶。 – kosa

+0

是的,我想是的。你可以詳細說明'缺少更新的用戶'.. – Sandeep

+0

我的意思是,你的RAD運行時可能沒有編譯用戶類與securityAnswers。我會建議做一個完整的清理和重建。 – kosa

回答

0

對不起!但我不相信RAD有什麼關係這一信息。除了明確指出爲什麼發生這種情況的原因:

是否返回類型,吸氣匹配的參數類型的setter的?

回答是否定的:)

+0

謝謝,但如果這是一個代碼級別的問題,我們應該得到類似的所有測試都拋出異常。這在我的Springsource IDE中正常工作。我認爲getter方法(readMethod())與setter方法參數進行檢查和寬鬆處理。 – Sandeep

+0

我認爲問題出在SecurityAnswers getter和setter中。嘗試將setSecurityAnswers的參數更改爲地圖。 – Abhi

+0

https://jira.springsource.org/browse/SPR-8806 https://jira.springsource.org/browse/SPR-8347都與這個問題有關我猜..但是,我們可以嘗試有一個相同的匹配讀取和寫入方法名稱 – Sandeep