在Jsp页面上加入两个Map - Struts2应用程序

时间:2014-09-02 06:56:57

标签: java jsp map struts2 ognl

我正在开发 Struts2 应用程序;

我的显示对象是地图对象:

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中找到它,如果它是真的,那么它将打印其值。< / p>

<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上加入这两个地图?

使用上述代码的当前视图_ enter image description here

1 个答案:

答案 0 :(得分:2)

您的模型结构

new HashMap<String,HashMap<String,List<PlanDAO>>>(); 

应该改进;它太吵了,你需要在你的页面中有五个嵌套的迭代器来做你需要的东西,永远不知道你在哪个迭代器中不计算它们,更重要的是,即使这个结构可以用来显示数据,它无法用来发送回来(你永远不知道)。

我强烈建议您阅读以下答案:

也就是说,在处理JSP中的集合时,你必须阅读OGNL的两个重要特性: