【问题标题】:Join two Map on Jsp page - Struts2 applicationJsp页面上加入两个Map——Struts2应用
【发布时间】:2014-09-02 06:56:56
【问题描述】:

我正在开发 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 中找到它,如果它为真,那么它将打印它的值。

<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>

我试过这个,它以错误的格式显示,意味着在单行中显示第二个地图的所有数据。我还听说应该避免使用 scriptlet 代码。

如何在 JSP 上加入这两个地图?

使用上述代码的当前视图_

【问题讨论】:

  • 你是什么意思使用其值的组合创建键?此外,您不应无缘无故地操纵视图层上的地图。
  • ... 以错误的格式显示,意味着在单行中显示第二个地图中的所有数据。 - 但这就是您正在做的事情。如果需要,可以将行放入迭代器中。
  • @RomanC 实际上我已经完成了组合键,现在我想要来自 'rateInventoryMap = new HashMap>();' 的行基于jsp页面上的那个键。我可以生成那个键 jsp 页面,并在“rateInventoryMap”中找到那个键吗?
  • @V.Rohan 不要在 cmets 中发布代码、编辑问题和添加详细信息,DAO 也不应该用作视图层上的数据 bean。
  • 使用rateInventoryMap['your_key_here'].currentRate

标签: java jsp map struts2 ognl


【解决方案1】:

你的模型结构

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

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

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

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

【讨论】:

  • OP 不要发回去,所以你最好找到如何加入他们。
  • @RomanC 这不是设计丑陋的好理由。正是出于这个原因,我写了you never know。也许今天他只展示它们,明天一个新的用例将需要它们发布。你猜怎么着 ?数据结构已经在整个应用程序中实现,更改它会很痛苦。除此之外,它对于他今天在他的应用程序中使用的其他数据结构很有用。或者你认为他的申请从不发回任何东西(可能,但不太可能)?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多