【问题标题】:How to get Map value given a key in a JSP?如何在给定 JSP 中的键的情况下获取 Map 值?
【发布时间】:2011-07-12 23:52:35
【问题描述】:

我有一个使用 JSP 中的 JSTL/Struts2/DisplayTag 标记库的 Struts 2 应用程序。有没有办法在给定键的情况下访问 JSP 中 Map 的值?

// Action code
Map<String,String> map = new HashMap<String,String>();

mapOnValueStack = map;

//add key/value pairs

fieldKeyOnValueStack = "1";//sets key

....

<%-- JSP code --%>

<s:property value="%{mapOnValueStack.get(fieldKeyOnValueStack)}" />

基本上我想在 JSP 中进行地图访问。 这可能吗?

谢谢!

【问题讨论】:

  • %{ } 事物(称为 OGNL)并非特定于 JSP/JSTL。它们特定于 Struts2。因此,对于非 Struts2 开发人员来说,这个问题非常令人困惑,因为“试试这个”的答案可能根本不正确。在普通 JSP 中,您将为此使用 EL ${mapOnValueStack[fieldKeyOnValueStack]}。然而,您的代码示例并没有表明这些变量在普通 JSP EL 范围内可以作为 ${mapOnValueStack}${fieldKeyOnValueStack} 使用。
  • 感谢您的 cmets,但我在问题中声明它是一个 Struts 2 应用程序,并且我正在使用 JSTL、Struts 2 和 Display Tag 库。那么,我假设任何回答这个问题的人都知道它们之间的区别。 '%{mapOnValueStack.get(fieldKeyOnValueStack)}' 仅在 Struts 2 标记内是正确的。这只是我试图表达的一个例子。

标签: java jsp struts2


【解决方案1】:

你试过了吗:

<s:property value="%{mapOnValueStack.['fieldKeyOnValueStack']}" />

【讨论】:

  • [之前真的有句号吗?
  • 如果地图在值堆栈上,则不需要 %{}。
【解决方案2】:

如果你在你的行动中使用了这个,

Map<String,Integer> headerMap=new HashMap<String, Integer>();
headerMap.put("INITIATED", 0);
headerMap.put("COMPLETED", 0);
headerMap.put("SUBMITTED", 0);
headerMap.put("APPROVED", 0);
headerMap.put("TRAFICKED", 0);
headerMap.put("REJECTED", 0);

然后在你的jsp上使用这个,

<s:property value="%{headerMap.INITIATED}" />
<s:property value="%{headerMap.REJECTED}" />

【讨论】:

  • 为我工作谢谢
【解决方案3】:

试试这个

<s:property value="%{mapOnValueStack['fieldKeyOnValueStack']}" />

【讨论】:

    【解决方案4】:

    试试这个

    <c:forEach var="entry" items="${mapOnValueStack}">
        Name:  ${entry.key} <br/>
        Value: ${entry.value}
    </c:forEach>
    

    希望它会起作用。

    【讨论】:

    • 谢谢,但我正在寻找一种通过键访问映射中值的方法。此解决方案遍历所有键/值对,并且不区分键。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-07
    • 2013-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多