在spring mvc中绑定地图

Posted

技术标签:

【中文标题】在spring mvc中绑定地图【英文标题】:Bind Map in spring mvc 【发布时间】:2012-03-30 12:53:29 【问题描述】:

我在 spring mvc 2 中有一个具有命令类“Class1”的表单

我想将 Class3 元素与此表单中的输入字段绑定。以下是我的课程。

我在 JSP 中迭代/绑定 Class2 元素,而不是像这样的映射

<c:forEach var="item" items="$class1.class2List" varStatus="itemsRow">  
    <form:input path="class2List[$itemsRow.index].anyElement2" />
    ..........
</c:forEach>

我的课程看起来像

Class1
List<Class2> class2List;
String anyElement1;

Class2
Map<String, Class3> class2Map;
String anyElement2;

Class3
Map<String, Class3> class3Map;
String nameToGet;
String anyElement3;

如何将anyElement3 绑定到class3Map 中。有可能吗?

为第一个答案编辑

Caused by: org.springframework.beans.NullValueInNestedPathException: Invalid property 'class2List[0].class2Map[0]' of bean class [com.Class1]: Could not instantiate property type [com.Class3] to auto-grow nested property path: java.lang.InstantiationException: com.Class3
    at org.springframework.beans.BeanWrapperImpl.newValue(BeanWrapperImpl.java:641)

【问题讨论】:

如何在 DAO 中设置 class2List 并将其映射回对象?问是因为我有一些问题 我的 DAO 和 class2List 是不同的类。我从 JSP 中填充 class2List 对象,然后使用这些值设置 DAO 对象的值。 你可能在你的 DAO 中使用过 ResultSetExtractor 你能帮我看看这个问题并发布一个例如你如何使用 ResultSetExtractor ***.com/questions/15555163/… 对不起,我没有使用 ResultSetExtractor 您能告诉我您是如何在 DAO 中将行映射到您班级中的列表项的吗? 【参考方案1】:

假设您的class2Map 有一个带有密钥的条目,例如mapkey,试试这个:

<form:input path="class2List[$itemsRow.index].class2Map['mapkey'].anyElement3" />

【讨论】:

什么异常?我已经这样做了一段时间了,没有任何问题。 @imrantariq 我错过了anyElement3 部分。现在编辑我的答案。 问题已修改。如何在 class3Map 中绑定 anyElement3。即 Class3 也包含 HashMap 使用类似的方法即可。使用class2List[$itemsRow.index].class2Map['key1'].class3Map['key2'].anyElement3 我认为你错过了单引号。确保完全按照我的说明使用它。 class2Map['key'].【参考方案2】:

org.springframework.beans.NullValueInNestedPathException: 无效属性 'prsCDData[Forced][0]'

与上述异常一样,您如何在任何对象中拥有属性“prsCDData[Forced][0]”? .我认为你的路径值是错误的。

【讨论】:

以上是关于在spring mvc中绑定地图的主要内容,如果未能解决你的问题,请参考以下文章

spring-mvc中抽象类的数据绑定

Spring MVC 使用矩阵变量绑定参数

Spring 3.0 MVC 绑定枚举大小写敏感

Spring MVC 数据绑定

Spring MVC 和 javascript(添加 Rows 函数) 绑定

Spring MVC 之类型转换