我正在研究Struts2应用程序;
我的显示对象是Map对象:
Map<String, HashMap<String, List<PlanDAO>>> channelRoomTypePlanmap =
new HashMap<String,HashMap<String,List<PlanDAO>>>();
Map<String, List<RateInventoryDAO>> rateInventoryMap =
new HashMap<String, List<RateInventoryDAO>>();
在这里,我有两个对象,其中
rateInventoryMap
键取决于channelRoomTypePlanmap
值组合。就像我打印
channelRoomTypePlanmap
的第一个值时一样,我想使用其值的组合来创建键,并在rateInventoryMap
中找到它,如果它为true,那么它将打印其值。<div>
<table id="mainTable" >
<tr>
<td>
<s:iterator value="channelRoomTypePlanmap">
<table border="1">
<tr>
<td><s:property value="key" />
</td>
<td>
<table>
<s:iterator value="value">
<tr>
<td><s:property value="key" />
</td>
<td>
<table border="1">
<s:iterator value="value">
<tr>
<td><s:property value="planName" />
</td>
<s:iterator value="rateInventoryMap">
<s:iterator value="value">
<td><s:property value="currentRate" />
</td>
</s:iterator>
</s:iterator>
</tr>
</s:iterator>
</table>
</td>
</tr>
</s:iterator>
</table>
</td>
</tr>
</table>
</s:iterator>
</td>
</tr>
</table>
</div>
我尝试过此操作,它以错误的格式显示,这意味着将所有第二个Map中的所有数据显示在同一行中。我也听说应该避免使用scriptlet代码。
如何在JSP上加入这两个Map?
使用以上代码_的当前视图
最佳答案
您的模型结构
new HashMap<String,HashMap<String,List<PlanDAO>>>();
应该改善;它太吵了,您需要在页面中使用五个嵌套的迭代器来执行所需的操作,永远不要不知道它们是在哪个迭代器中,更重要的是,即使此结构可用于显示数据,也无法用于将其发送回(您永远不会知道)。
我强烈建议您阅读以下答案:
Struts2 Object Modelling
也就是说,在JSP中处理Collections时,您必须阅读有关OGNL的两项重要功能:
OGNL List Selection
OGNL List Projection