【问题标题】:Not getting the 'index" value from for loop to the if loop in the JSP没有从 JSP 中的 for 循环到 if 循环中获取“索引”值
【发布时间】:2008-12-03 14:01:21
【问题描述】:

我的 if 语句总是评估为 false 并且没有进入 <span> 块。因此,我无法在 if 条件中获取“index”的值,我已经尝试了所有使用 # 和 % 附加索引的东西。有人可以提出解决方案吗?

<c:forEach var="index" begin="1" end="<%=a%>" step="1">
    <s:if test="index == 1">
        <span class="currentpage"><b>${page_id}</b></span>
    </s:if>
    <s:else>
        <a href="searchAction.html?page_id=${index}&searchString=${searchString}" class="paginglinks">${index}</a>
    </s:else>
</c:forEach>

【问题讨论】:

  • 您能告诉我们您使用的是哪个 taglib,最好包含声明吗?
  • 它的

标签: jsp struts2 taglib


【解决方案1】:

确实是标签有冲突

应该是这样的

<c:forEach var="index" begin="1" end="<%=a%>" step="1" varStatus="status">
                            <c:choose>
                            <c:when test="${page_id==index}">                       
                                <span class="currentpage"><b>${page_id}</b></span>
                            </c:when>
                            <c:otherwise>
                            <a href="searchAction.html?page_id=${index}&searchString=${searchString}" class="paginglinks">${index}</a>
                            </c:otherwise>
                            </c:choose>
                            </c:forEach>

【讨论】:

    【解决方案2】:

    冲突是在第一个帖子 你在混

    • JSTL 标签(c:forEach)
    • Struts 标签(s:if)

    您提出的解决方案有效,因为 你现在有

    • JSTL 标签(c:forEach)
    • JSTL 再次标记(c:when)

    另一个好的解决方案是

    • Struts 标签(s:iterator)
    • 再次使用 Struts 标签(s:if)

    一般来说,使用来自多种技术的标签 预计会有问题。

    【讨论】:

      【解决方案3】:

      使用

       test="${index == 1}"
      

      或者尝试使用 varStatus 属性...

      <c:forEach var="index" varStatus="status" begin="1" end="<%=a%>" step="1">
      
       <s:if test="${status.count == 1}">
        <span class="currentpage"><b>${page_id}</b></span>
       </s:if>
       <s:else>
        <a href="searchAction.html?page_id=${index}&searchString=${searchString}" class="paginglinks">${index}</a>
       </s:else>
      </c:forEach>
      

      【讨论】:

      • 不,如果我在那个测试中使用 ${},得到那个有趣的错误“属性测试不接受任何表达式”
      【解决方案4】:

      测试值不可评估,它只是页面的一个字符串。

      编辑,你有你使用strut的语法。

      添加“%{}”,如下所示:

      <s:if test="%{index == 1}">
      

      【讨论】:

      • 不,如果我在那个测试中使用 ${},得到那个有趣的错误“属性测试不接受任何表达式”
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-30
      • 2019-07-31
      • 1970-01-01
      • 2010-12-06
      • 1970-01-01
      相关资源
      最近更新 更多