나는 이것에 대해 묻는 방법에 대해서는 확신하지 못한다. 그러나 나는 그것을 시도하려고 시도 할 것이다.지도지도 또는 데이터를 구성하는 다른 방법을 바인딩하는 방법
동적으로 생성 된 값 묶음으로 구성된 기존 응용 프로그램이 있습니다. 폼은 행과 열의 행렬로 나뉘며, JSP는이 정보를 사용하여 필요한 형식 인 입력을 구성합니다. 양식을 구축하기 위해 나는 그런 같은 일부 자바 클래스가 (내가 뭐하는 거지 대부분의 의사 코드를 너무 당신에 관한 아이디어를 얻을) :
class Form {
List<FormParts> parts;
}
class FormParts {
List<FormRow> rows;
List<FormHeader> headers;
}
class FormRow {
String name;
}
class FormHeader {
String name;
}
을 내가 루프에 의해 동적으로 JSP에서 양식을 구축하는이 클래스를 사용 FormParts을 통해 다음과 같은 형식의 테이블을 구축하기 위해 FormRows 및 FormHeaders를 사용 : 입력을 인덱스에 FormResponse 여기에 설명 된 결과 답변 목록 카운터를 사용하여 :
이class FormResponse {
List<FormAnswer> answers;
}
class FormAnswer {
int rowNumber;
int headerNumber;
String value;
}
오전 데 문제가 List<FormAnswer> answers
입니다. 그것은 List이기 때문에 DB에서 FormResponses를 다시로드하는 기능을 제공하려면 모든 Answers를 저장해야합니다 (nulls). 이것은 내 테이블에 엄청난 양의 쓰레기 행을 만들어 응용 프로그램을 느리게 만듭니다. 그러나 제가 약 4 개월 전에 처음 썼을 때, 저는 Spring MVC를 Maps Map에 바인딩하는 방법을 알아 내려고 노력한 것을 기억합니다. 이것은 단순히 건너 뛸 수 있기 때문에 이것을 구현하는 훨씬 좋은 방법이 될 것입니다 나는 대답 할 필요가 없다. 문제는 Spring MVC 내부적으로 List와 Maps가 LazyList와 LazyMap이된다는 것입니다.
누군가 다른 해결책이 있습니까?
내가 지금 당면하고있는 문제는 우리가 지금 Spring 3.06에 갇혀 있다는 것입니다. 해시 맵에 대한 답변 목록을 전환하려고 시도했지만 "org.springframework.beans.NullValueInNestedPathException"으로 채점하기 시작합니다. bean 클래스 [com.xxx.domain.FormResponse]의 잘못된 속성 'answers [0]': 확인할 수 없습니다. 디폴트 값 자동 증가 특성 유형 "을 참조하십시오. 커스텀 LazyMap을 구현하고 도움이되는지 확인하려고합니다. – CodeChimp
그럴 필요는 없습니다. 이것은 새로운 특징이 아닙니다. 'WebDataBinder'의'autogrowNestedPaths' 속성을 확인하십시오. https://github.com/SpringSource/spring-framework/blob/v3.0.6.RELEASE/org.springframework.context/src/main/java/org/springframework/validation/DataBinder.java#L131 –
이전 댓글을 긁어 라. . 예외는 실제로 Spring이 당신의 콜렉션을 자동 확장하려고 시도했다고 말한다. 그러나 수집 항목의 유형을 판별 할 수 없었습니다. ** 귀하의 제네릭이 정확하지 않을 수 있습니다. ** –