2012-01-24 3 views
0

테스트 사례를 실행하는 동안 IBM RAD IDE 환경 (IBM JDK 1.6을 런타임 JRE로 사용)에서 문제가 발생했습니다. 동일한 코드가 Springsource IDE (Sun JDK 1.6을 런타임 JRE로 사용)로 잘 실행됩니다. JDK 또는 Spring 프레임 워크와 관련된 문제인가? 간단한 코드의 역사 : 우리가이 예외를 얻고있다스프링 검증 문제

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

사용하여 'securityAnswers'를 확인하려고 할 때

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

아래로 자바 콩이 있습니다.

발생 원인 : org.springframework.beans.NotReadablePropertyException : Bean 속성 'securityAnswers'의 Bean 속성 'securityAnswers'가 읽을 수 없거나 유효하지 않은 getter 메소드가 있습니다. getter의 반환 유형이 일치합니까? 세터의 매개 변수 유형? org.springframework.validation.AbstractPropertyBindingResult.getActualFieldValue에서 org.springframework.beans.BeanWrapperImpl.getPropertyValue (BeanWrapperImpl.java:697) 에서 org.springframework.beans.BeanWrapperImpl.getPropertyValue (BeanWrapperImpl.java:705) (AbstractPropertyBindingResult에서 . 자바 : org.springframework.validation.ValidationUtils에서 org.springframework.validation.ValidationUtils.rejectIfEmptyOrWhitespace (ValidationUtils.java:224) 에서 org.springframework.validation.AbstractBindingResult.getFieldValue (AbstractBindingResult.java:226) 99) . rejectIfEmptyOrWhitespace (ValidationUtils.java:182)

+0

당신에게 있는지 IBM RAD IDE 환경이 곳에서 사용자를 컴파일 한 더 :)입니까? 업데이트 된 사용자가 누락 된 것 같습니다. – kosa

+0

예, 그렇게 생각합니다. '누락 된 업데이트 된 사용자'에 대해 자세히 설명해 주실 수 있습니까? – Sandeep

+0

내 뜻은 RAD 런타임이 securityAnswers를 사용하여 User 클래스를 컴파일하지 않았을 수 있다는 것입니다. 나는 완전한 정리와 재건을 제안 할 것이다. 덕분에 – kosa

답변

0

죄송합니다. RAD는 이것과 관련이 있다고는 생각하지 않습니다. 예외가 명확하게 이유를 설명합니다 :

getter의 반환 유형이 setter의 매개 변수 유형과 일치합니까?

답변

+0

감사합니다. 그러나 이것이 코드 수준의 문제인 경우 우리는 유사해야합니다. 모든 테스트에서 throw 된 예외입니다. 내 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