【问题标题】:Hash Map key check in JSTLJSTL 中的哈希映射键检查
【发布时间】:2014-08-07 08:19:59
【问题描述】:

需要帮助。我有一个从弹簧控制器返回到 JSP 的哈希映射。有没有办法检查某个键是否存在而与任何值无关(该值也可能为空)

说,下面的哈希图是从控制器发送的

HashMap hmap = new HashMap();
hmap.put("COUNTRY", "X");
hmap.put("REGION", null);

如果键 REGION 存在(值可以是任何值,包括 null)然后在 jsp 中显示一些部分。

我正在尝试以 ${hmap['REGION']} 的形式访问密钥

提前致谢。

【问题讨论】:

    标签: java jsp jstl


    【解决方案1】:

    尝试使用 containsKey:

    ${hmap.containsKey('REGION')}
    

    【讨论】:

    • @Amz - 为了调用地图的 containsKey() 或 containsValue() 方法,您需要确保您运行的是与 Servlet 3.0 兼容的容器,例如 Tomcat 7、Glassfish 3、JBoss AS 6 等,并且您的 web.xml 被声明为符合 Servlet 3.0。这样您就可以利用 EL 2.2 的新特性:使用参数调用非 getter 方法。
    • 如果您没有新版本的 tomcat,您可以使用函数 taglib 中的 fn:containsKey(map,key)
    • @EdgeCaseBerg 嗯? fn:包含密钥?没听说过这个 JSTL 函数! docs.oracle.com/javaee/5/jstl/1.1/docs/tlddocs/fn/…
    【解决方案2】:
    <c:forEach var="entry" items="${hmap }" varStatus="status">        
          <c:if test="${entry.key == 'REGION'}">
            <tr>
               <td>${entry.key}</td>
               <td>${entry.value}</td>
            </tr>
          </c:if>
    </c:forEach>
    

    检查一下,这个解决方案是否有效? 如果不工作,请发布并发布您的 JSP 的 jstl 代码。

    【讨论】:

    • 谢谢,我正在尝试以 ${hmap['REGION']} 的形式访问密钥
    • ${hmap['REGION']} 应该可以工作。你好吗sending the HashMap,检查HashMap received on JSP 与否?
    • 你到底为什么要使用循环?
    • @EJP - 我认为 OP 会迭代哈希图,如果条件匹配它将显示数据,否则不会。这有什么奇怪的?在地球上还有没有人在 jstl 中使用循环?
    • @user3145373ツ:我在 JSP 中有地图的数据。我正在寻找一个检查,我试图确定密钥是否存在。
    【解决方案3】:

    我知道您想测试值可能包含 null 的位置,但有一个解决方案是使用 empty 运算符,当人们可能还想排除 null 值时,它会评估为 true如果值为 null 或不存在。

    <c:if test="${not empty hmap['REGION']}">
        <%-- conditional block --%>
    </c:if>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-19
      • 2014-09-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多