スレッドは、sending-data-back-to-controller-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]
製品詳細ページでこれらの非表示フィールドが正しくバインドされ、偶数の値が割り当てられているため、どこで間違っているのかわかりませんが、フォームが送信されると、この問題に直面しています。