在spring中使用对象作为映射(treemap)中的键

在spring中使用对象作为映射(treemap)中的键,spring,jstl,Spring,Jstl,我尝试在JSP页面上显示FormBean中映射中对象的属性。地图定义为 Map<KeyObject, ValueObject> m Map m KeyObject有两个属性 public class KeyObject implements Comparable<KeyObject> { private Integer a; private Integer b; getters/setters/and rest basic methods }

我尝试在JSP页面上显示FormBean中映射中对象的属性。地图定义为

Map<KeyObject, ValueObject> m
Map m
KeyObject有两个属性

public class KeyObject implements Comparable<KeyObject> {
    private Integer a;
    private Integer b;

    getters/setters/and rest basic methods
}
公共类KeyObject实现了可比较的{
私有整数a;
私有整数b;
getter/setter/和rest基本方法
}
在JSP上,我想获得如下代码:

<c:forEach items="${formBean.m}" item="itm">
    ...
    <form:input path="m[itm.key].propertyName" />
    ...
</c:forEach>

...
...
我需要:

  • 按正确的顺序显示元素
  • 提交要映射的对象
那么,有什么简单的解决办法,或者我应该做一些“魔术”

谢谢你抽出时间

斯特凡


更多信息。每个对象都有其他“视图”,所以我尝试使用c:import

<c:forEach items="${formBean.m}" item="itm">
    <c:import url=${itm.value.name}Page.jsp" />
</c:forEach>


${itm.key.propertyName}
${itm.value.propertyName}
${formBean.m[itm.key].propertyName}

您可以像上面那样迭代映射键和值,并根据需要输出不同的字段

JSTL的可能副本是,但不仅仅是。我认为我需要使用一些代码(可能是initBinder)将POST数据正确地转换为对象。我已经检查了你们提供的链接,但它并没有包含任何有用的信息。那个么我不明白,你们有什么具体的问题?你问了三四个不同的问题。如何显示关键点为对象的地图中的值?2.如何提交这些数据并创建映射(键和值)?1在我的回答中得到回答,2)通过表单提交数据,3依赖于控制器中的反序列化(spring使用jackson)我只编写了一个示例,您的代码对此没有问题,但问题更复杂。我将编辑我的帖子来描述这一点。除了我应该如何发布数据并将[itm.key]转换为KeyObject之外?itm.key是一个KeyObject,发布数据只需使form action=postYes,key是KeyObject,但不是简单的object。如果使用整数或字符串,则不会有任何问题。
<c:forEach items="${formBean.m}" varStatus="itm">
    <tr>      
      <td>${itm.key.propertyName}</td>
      <td>${itm.value.propertyName}</td> <!--which is same as below ...  -->
      <td>${formBean.m[itm.key].propertyName}</td>
    </tr>
</c:forEach>