包含List的Spring绑定映射

时间:2011-09-13 11:26:28

标签: java spring binding

我正在尝试将Map<String, org.springframework.util.AutoPopulatingList<B>>与Spring Framework绑定,并且我遇到了以下异常:

ERROR [jsp:165] org.springframework.beans.NullValueInNestedPathException: Invalid property 'command.map[key][0]' of bean class
troller.form.CommandForm]: Cannot access indexed value in property referenced in indexed property path 'map[key][0]': returned null

命令对象是这样的:

public class Command {
   private Map<String, AutoPopulatingList<B>> map;
   //getters and setters for map
}

B类就像

Public class B {
    private String name;
    private String age;
}

和JSP代码是这样的

<c:forEach var="entry" items="${command.map}">
    <c:forEach var="b" items="${entry.value}">
         <form:hidden path="command.map[${entry.key}][${status.index}]" />
         <c:out value="${b.name}" />
    </c:forEach>
</c:forEach>

我想我还应该提到地图是动态的,所以我不知道有多少条目或Map的列表大小。当我向地图添加新条目时会出现问题。

我知道这与在Map中初始化List有关,但这不是为什么建议使用AutoPopulatingList所以不应该有任何与初始化相关的问题?

这可以与Spring Framework绑定吗?

1 个答案:

答案 0 :(得分:1)

我只是通过在地图对象中预先填充地图和数组来解决问题。 所以要创建它,请使用

@ModelAttribute(FORM_PRECRUISE_SHOPPING) 
@Valid 
PrecruisePlannerShoppingForm form