[SPRING] 스프링 데이터 기능을 사용하여 데이터를 바인딩 할 수 없음
SPRING스프링 데이터 기능을 사용하여 데이터를 바인딩 할 수 없음
쓰레드가 데이터 - 백 - 컨트롤러 - 스프링 -mvc 전송 중 계속됨
나는 사용자에게 몇 가지 옵션을 보여줄 필요가있는 제품 세부 정보 페이지에서 작업 중이며 사용자는 몇 가지를 선택하고 제출 버튼 제품은 바구니에 추가해야합니다. 내 의도는 해당 데이터 개체를 내 장바구니 컨트롤러로 전송하여 해당 값을 사용할 수 있고 개체에 동적 값이 포함되어 있으므로 미리 결정된 필드 개체를 정의 할 수 없기 때문입니다. 내 데이터 개체입니다.
public class PrsData {
private Map<String, List<PrsCDData>> prsCDData;
public PrsData(){
this.prsCDData = MapUtils.lazyMap(new HashMap<String, List<PrsCDData>>(),
FactoryUtils.instantiateFactory(PrsCDData.class));
}
}
public class PrsCDData {
private Map<String, List<ConfiguredDesignData>> configuredDesignData;
// same lazy map initialization
}
내 제품 세부 페이지 컨트롤러에서 값을 다음과 같이 설정합니다.
model.addAttribute("prsData", productData.getPrsData());
내 제품 세부 정보 페이지에서 JSP 형식을 사용합니다.
<form:form method="post" commandName="prsData" action="${addProductToCartAction}" >
<form:hidden path="prsCDData[''${prsCDDataMap.key}'']
[${status.index}].configuredDesignData['${configuredDesignDataMap.key}']
[${configuredDesignDataStatus.index}].code" />
</form:form>
하지만 제출 단추를 클릭하면 다음 예외가 발생합니다.
org.springframework.beans.InvalidPropertyException:
Invalid property 'prsCDData['Forced'][0]' of bean class [com.product.data.PrsData]:
Property referenced in indexed property path 'prsCDData['Forced'][0]'
is neither an array nor a List nor a Set nor a Map;
returned value was [com.product.data.PrsCDData@6164f07e]
나는 제품 세부 정보 페이지에서 숨겨진 필드가 올바르게 바인딩되어 있고 심지어 값이 할당되었지만 양식이 제출 될 때이 문제에 직면하고 있는지 잘 모르겠습니다.
해결법
-
==============================
1.LazyMap 팩토리는 LazyList를 반환해야합니다.
LazyMap 팩토리는 LazyList를 반환해야합니다.
FactoryUtils.instantiateFactory (PrsCDData.class) 지정된 팩토리는 PrsCDData 목록이 아닌 새 PrsCDData 객체를 생성합니다.
prsCDData['Forced'] -> if exists then return it else create instance of PrsCDData.class
해야한다
prsCDData['Forced'] -> if exists then return it else create instance of LazyList<PrsCDData>
당신이 즉시 ArrayIndexOutOfBoundsExecption으로 인도하는 인덱스 '0'에 접근하기를 원하기 때문에 LazyList를 사용하라.
편집 : 간단한 예제
public class Test { @SuppressWarnings("unchecked") public static void main(String[] args) throws UnsupportedEncodingException { Map<String, List<SimpleBean>> map = MapUtils.lazyMap(new HashMap<String,List<Object>>(),new Factory() { public Object create() { return LazyList.decorate(new ArrayList<SimpleBean>(), FactoryUtils.instantiateFactory(SimpleBean.class)); } }); System.out.println(map.get("test").get(0)); } public static class SimpleBean { private String name; } }
from https://stackoverflow.com/questions/12348491/unable-to-bind-data-using-spring-data-functionality by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 10.XX.XX.28 : 6379의 Redis에 연결할 수 없습니다 : Unknown error - Spring Batch 또는 Windows 컴퓨터에서 액세스하는 중입니다. (0) | 2019.05.02 |
---|---|
[SPRING] 친숙한 URL 매핑 문제 - Java Spring (0) | 2019.05.01 |
[SPRING] 동작을 형성하기위한 컨텍스트 경로를 추가하는 Spring MVC (0) | 2019.05.01 |
[SPRING] WSO2 ESB 4.6.0의 Spring Mediator에 대한 실제 예제 (0) | 2019.05.01 |
[SPRING] NoSuchMethodError 오류가 세션 팩토리를 생성합니다. (0) | 2019.05.01 |