【问题标题】:Comparing ArrayList String element in jstl 1.2 [duplicate]比较jstl 1.2中的ArrayList String元素[重复]
【发布时间】:2014-06-30 12:33:17
【问题描述】:

我正在尝试创建一个表,当“键”等于“名称”时,该值是指向另一个页面的链接,否则它应该将值打印为文本。我有以下键:[名称,类别,架构]。这是一个数组列表

<c:when test='#{(results.keys.get(loopVal.index)).equals("name")}'>

在我的表格中,“名称”列应该有值作为链接。但它不起作用,好像 c:when 返回 false。但我检查了“results.keys.get(loopVal.index)”,它正确打印了密钥。

我尝试过与 equals()、== 和 eq 进行比较。我也有正确的 jstl 库 xmlns:c="http://java.sun.com/jsp/jstl/core"

我找不到问题,也许它与比较列表元素有关?还是我忽略了一些非常明显的东西?

这是我的代码的更大的 sn-p:

<ui:repeat value="#{results.keys}" var="key" varStatus="loopVal">
                <td id="#{results.keys.get(loopVal.index)}_#{instance.getId()}" class="view">
                <c:choose>
                    <c:when test='#{(results.keys.get(loopVal.index)).equals("name")}'>
                        <h:link value="#{values.get(loopVal.index)}" outcome="search">
                        <f:param name="type" value="#{values.get(loopVal.index)}" />
                    </h:link>
                    </c:when>
                    <c:otherwise>
                        #{values.get(loopVal.index)}
                    </c:otherwise>
                </c:choose>
                </td>
            </ui:repeat>

【问题讨论】:

    标签: java jsf jstl


    【解决方案1】:

    您应该使用c:forEach 而不是ui:repeat

    <c:forEach items="#{results.keys}" var="key" varStatus="loopVal">
    ...
    </c:forEach>
    

    看看 BalusC 的 this post,了解标签处理程序(如 c:forEach)和普通 JSF 组件(如 ui:repeat)之间的区别。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-30
      • 2012-02-12
      • 1970-01-01
      • 1970-01-01
      • 2017-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多