Java 包含列表的Spring绑定映射
我正在尝试用Spring Framework绑定Java 包含列表的Spring绑定映射,java,spring,binding,Java,Spring,Binding,我正在尝试用Spring Framework绑定Map,但遇到以下异常: 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 index
Map
,但遇到以下异常:
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
}
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>
我想我还应该提到,地图是动态的,所以我不知道有多少条目,或者地图列表的大小。当我向地图添加新条目时,问题就出现了
我知道这与初始化地图中的列表有关,但这不是为什么建议使用AutoPopulationGlist的原因吗?这样就不会有任何与初始化相关的问题了
这可以与Spring框架绑定吗?我只是通过在map对象中预填充map和数组来解决这个问题。 因此,要创建它,请使用
@ModelAttribute(FORM_PRECRUISE_SHOPPING)
@Valid
PrecruisePlannerShoppingForm form
你确定你可以用EL这样称呼地图吗?似乎您正在尝试访问矩阵字段。我只是猜测,也许您需要一些额外的括号:(command.map[${entry.key}])[${status.index}]?我很确定map可以像那样与EL一起使用。即使生成的HTML显示正确的输入元素,如果我从数据库填充映射,我可以向现有列表添加更多的B对象。假设我有一个内容为[key1[b1,b2,b3]]的映射,我想向它添加[key2[b3,b4]],然后我得到NullValueInestedPathException
@ModelAttribute(FORM_PRECRUISE_SHOPPING)
@Valid
PrecruisePlannerShoppingForm form