【问题标题】:how to use if loop inside if loop using jstl如何在使用jstl的if循环中使用if循环
【发布时间】:2014-06-02 11:07:56
【问题描述】:

我有一个要求,如果状态为 0,则添加一个 css 类 active 否则添加一个 css 类 active1,为此我已经完成了如下操作

<c:forEach items="${parentList}" var="test">

<c:choose>
  <c:when test="${test[1] eq 0}">
   <li><a href="#" class="active" value="${test[0].id}-${test[0].category}" id="${parent.id}" onclick="return getQuestions(this);" > 
${test[0].name }</a></li>
  </c:when>

  <c:otherwise>
  <li><a href="#" class="active1" value="${test[0].id}-${test[0].category}" id="${parent.id}" onclick="return getQuestions(this);" > 
<img src="${pageContext.request.contextPath}/resources/ui_resources/img/checked.jpg" alt="" height="20" width="20"/>${test[0].name }</a></li>
  </c:otherwise>
</c:choose>
</c:forEach>

现在我的要求是

${test[0].category} 是客户端然后添加一个按钮&lt;button name="delete/&gt;

所以现在出现了 4 个条件

  1. 如果状态为 0 且类别不是客户端,则添加活动类
  2. 如果状态为 0 且类别为客户端,则添加 class="active" 和 添加按钮。
  3. 如果状态不是 0 类别是客户端然后添加 class="active1" 和 添加按钮
  4. 如果状态不是 0 并且类别不是客户端,则只添加 class="活动"。

那么任何人都可以告诉我如何在使用 jstl 的 if 循环中使用 if 循环

【问题讨论】:

  • 我会分别处理类和按钮的要求。所以基本上总是上课活跃,除非status is not 0 category is client。仅当类别为客户端时添加按钮。为什么会有4个条件?您可以在&lt;c:choose ../&gt; 之前确定类,并使用&lt;c:choose /&gt; 来确定是否呈现(或不呈现)按钮。
  • @M.Deinum 所以你认为我必须创建 3 个
  • 没有。 1 c:if 设置变量和 1 c:choose。或者创建一个你可以调用来确定类的函数,那么你只需要 1 个 c:choose。
  • 您可能希望将 img 元素移动到 css 类 (active1)。 (刚刚注意到为 active1 添加的图像)。
  • @M.Deinum 你能不能把它作为答案,这样我就可以投票了

标签: spring jstl


【解决方案1】:

不要使用大量&lt;c:choose /&gt;,而是使用&lt;c:if /&gt;&lt;c:var /&gt; 来确定要使用的类。您也可以使用&lt;:if /&gt; 作为按钮,这将需要您将图像的渲染移动到 css。

JSP 看起来像这样(从我的脑海中)。

<c:forEach items="${parentList}" var="test">
    <c:set var="clazz" value="active" />
    <c:if test="${test[1] ne 0 and test[0].category ne 'client'}">
        <c:set var="clazz" value="active1" />
    </c:if>

    <li>
        <a href="#" class="${clazz}" value="${test[0].id}-${test[0].category}" id="${parent.id}" onclick="return getQuestions(this);" > ${test[0].name }</a>
        <c:if test="${test[0].category eq 'client'}"><button name="delete" /></c:if>
    </li>
</c:forEach>

您的 css 类需要以下内容 active1

a.active1 {
    background-image: url('/resources/ui_resources/img/checked.jpg');
    background-repeat: no-repeat;
    padding-left: 25px;  /* width of the image plus a little extra padding */
    display: block;
}

【讨论】:

  • 感谢您的回答,+1。​​我会尝试您的方式并让您知道
  • 从我的头顶输入,可能忘记在某处关闭statemetns。 &lt;c:if test="..." 中的表达式未正确关闭。应该有一个结束}。 (刚刚添加)。
  • 这行显示错误
  • 如果没有错误,很难分辨出什么是错误的。另外我不希望它运行,因为我不确定您发布的是否是实际代码。
  • 在这一行发现多个注释: - "c:if" 缺少开始标记 - 没有开始标记 ()。
【解决方案2】:

根据您的代码块,如何在&lt;c:choose&gt; 块之后添加c:if 标签?

<c:forEach ...>
    <c:choose ...>
    </c:choose>
    <%-- here to check buuton add or not --%>
    <c:if test="${test[0].category == 'client'}"><button name="delete" /></c:if>
</c:forEach

【讨论】:

    猜你喜欢
    • 2016-02-06
    • 2020-10-15
    • 2014-08-14
    • 1970-01-01
    • 1970-01-01
    • 2013-09-28
    • 1970-01-01
    • 1970-01-01
    • 2013-01-30
    相关资源
    最近更新 更多