我正在研究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

10-06 08:54