JSTL演示问题 - 如果声明

时间:2011-04-01 06:17:01

标签: jsp jstl

我需要根据从arraylist中获取的值来表示列。

<c:forEach items="${row}" var="cell">
        <c:if test="${(cell != 'Read') || (cell !='Write')}" >
            <td id="access">${cell}</td>
        </c:if>
        <c:if test="${(cell == 'Read') || (cell =='Write')}" >
            <td>${cell}</td>
        </c:if>

</c:forEach>

我有3种类型的值进入单元格 - 读取,写入和其他。对于Others,它进入!= condition,但对于Read和Write,它同时满足if语句。我无法使用if-else。 提前致谢

2 个答案:

答案 0 :(得分:2)

如果您的代码中的第二个IF为ELSE,则以下是代码的等效if-else语句。

<c:forEach items="${row}" var="cell">
    <c:choose>
        <c:when test="${cell ne 'Read' or cell ne 'Write'}">
            <td id="access">${cell}</td>
        </c:when>
        <c:otherwise>
            <td>${cell}</td>
        </c:otherwise>
    </c:choose>
</c:forEach>

检查IF中的条件语句。正如voidnnull指出你的第一个IF而不是使用|| (或)使用&amp;&amp; (和)。

答案 1 :(得分:0)

这是因为您在第一个测试条件下使用||运算符。

使用&amp;&amp;运算符,它将按预期工作。 <c:if test="${(cell != 'Read') && (cell !='Write')}" >

此外,对于使用JSTL的if-else构造,请使用<c:choose>标记,您可以在其下使用<c:when><c:otherwise>。它们的工作方式与if-else类似。

示例:http://www.exampledepot.com/egs/javax.servlet.jsp.jstl.core/if.html