测试一个字符串,如果它包含所需的值,则在它前面打勾

时间:2015-05-07 22:58:49

标签: jsp jstl el

我有一个包含3列的表,我从数据库中获取第一列中的值。

如果第一列的值包含 IN ,那么我放置一个" X"在同一行的相应第二列中,我会在 OUT 中放一个十字。

我的问题是,例如我在第一列的选项名称中有4个IN和4 OUT不是相同的顺序,我的检查失败,它只是通过循环并放置" X"在IN的前4行中,同样适用于" X"在前4行的OUT中。而不是离开行,它不包含 IN OUT

<table border="5" ><tr>
                <th>value</th>
                <th>IN</th>     
                <th>OUT</th>
          </tr>
          <tr><td> 
        <c:forEach items="${abc}" var="user"> 
                <option value="${user.name}">${user.name}</option><br>

         </c:forEach> 
       </td>
       <td>
            <c:forEach items="${abc}" var="user"> 

                     <c:if test="${not fn:containsIgnoreCase(user.name, 'IN')}">
                        <option>X</option><br>
                    </c:if>

         </c:forEach> 
       </td>
       <td>
            <c:forEach items="${abc}" var="user"> 

                     <c:if test="${not fn:containsIgnoreCase(user.name, 'OUT')}">
                        <option>X</option><br>
                    </c:if>

         </c:forEach> 
       </td>
       </tr>
       </table>

2 个答案:

答案 0 :(得分:1)

您问题的最佳解决方案是:

    <c:forEach items="${abc}" var="user"> 
      <c:choose>
            <c:when test="${fn:containsIgnoreCase(user.name, 'IN')}">
                <option>X</option><br>
            </c:when >
            <c:otherwise>
                <option>Y</option>
            </c:otherwise>
     </c:choose>
    </c:forEach>

答案 1 :(得分:0)

我得到了解决方案,将做2次测试,而不是一次。

<c:if test="${ fn:containsIgnoreCase(user.name, 'IN')}">
                        <option>X</option><br>
                    </c:if>
<c:if test="${fn:containsIgnoreCase(user.name, 'OUT')}">
                        <option></option><br>
                    </c:if>