【问题标题】:How to check in JSTL whether object is String or Collection? [duplicate]如何在 JSTL 中检查对象是字符串还是集合? [复制]
【发布时间】:2011-08-10 16:01:49
【问题描述】:

我正在使用 JSTL,想检查一个对象是字符串还是集合。

fn:length 返回两种类型的结果(字符串大小或集合中元素的数量)。

<c:if test="${fn:length(item)>1}">
   <c:out value="${fn:length(item)} " />
</c:if>

我如何确定我得到了哪一个?

【问题讨论】:

    标签: java jstl


    【解决方案1】:

    你可以看看类名。例如:

    <c:if test="${item.class.simpleName == 'String'}">
       <!-- it's a String! -->
    </c:if>
    

    【讨论】:

      【解决方案2】:

      item.class 与 tomcat 7 一起使用时会导致错误。 对我来说这很有效(虽然它更脏):

      ${item.link.getClass().simpleName == 'String'}
      

      【讨论】:

      • 由于 Tomcat 的较新版本,接受的答案对我不起作用,但确实如此。谢谢!
      • 这实际上不起作用,因为返回的 getClass().simpleName不是 字符串,而是 java.util.LinkedHashMap$Entry
      • @gene:OP 主要想检查 item 是 String 还是其他东西。它非常适合 OP。
      【解决方案3】:

      如果你需要区分某个东西是否是一个Collection,你可以使用迭代来判断它是否是一个Collection,并设置一个var。这对我有用:

      <c:set var="collection" value="false" />
      <c:forEach var="item" items="${yourObjectWhichMayBeCollection}" varStatus="row">
          <c:if test="${row.index > 0}">
             <c:set var="collection" value="true" />
          </c:if>
      </c:forEach>
      <!--Now you can examine ${collection} & decide e.g. Collection vs. String -->
      

      【讨论】:

        猜你喜欢
        • 2021-02-28
        • 1970-01-01
        • 2017-04-27
        • 1970-01-01
        • 2019-07-18
        • 1970-01-01
        • 2012-04-06
        • 1970-01-01
        • 2017-06-18
        相关资源
        最近更新 更多