如何在JSTL中使用if-else选项

时间:2011-01-03 19:02:54

标签: jsp jstl

JSTL中是否有if-else标记?

7 个答案:

答案 0 :(得分:503)

是的,但它很笨重,例如。

<c:choose>
  <c:when test="${condition1}">
    ...
  </c:when>
  <c:when test="${condition2}">
    ...
  </c:when>
  <c:otherwise>
    ...
  </c:otherwise>
</c:choose>

答案 1 :(得分:101)

对于简单的if-else,你可以像这样使用三元运算符

<c:set value="34" var="num"/>
<c:out value="${num % 2 eq 0 ? 'even': 'odd'}"/>

答案 2 :(得分:45)

没有if-else,只是如果。

<c:if test="${user.age ge 40}">
 You are over the hill.
</c:if>

您可以选择使用select-when:

<c:choose>
  <c:when test="${a boolean expr}">
    do something
  </c:when>
  <c:when test="${another boolean expr}">
    do something else
  </c:when>
  <c:otherwise>
    do this when nothing else is true
  </c:otherwise>
</c:choose>

答案 3 :(得分:23)

我只是使用两个if标签就逃之夭夭,以为我会添加一个答案,以防其他人使用它:

<c:if test="${condition}">
  ...
</c:if>
<c:if test="${!condition}">
  ...
</c:if>

虽然技术上不是if-else本身,但行为是相同的,并且避免了使用choose标记的笨重方法,因此根据您的要求的复杂程度,这可能更为可取。

答案 4 :(得分:4)

你必须使用这段代码:

<%@ taglib prefix="c" uri="http://www.springframework.org/tags/form"%>

<c:select>
            <option value="RCV"
                ${records[0].getDirection() == 'RCV' ? 'selected="true"' : ''}>
                <spring:message code="dropdown.Incoming" text="dropdown.Incoming" />
            </option>
            <option value="SND"
                ${records[0].getDirection() == 'SND'? 'selected="true"' : ''}>
                <spring:message code="dropdown.Outgoing" text="dropdown.Outgoing" />
            </option>
        </c:select>

答案 5 :(得分:0)

除了需要其他条件外,在许多情况下,您还需要在多个位置使用相同条件。

我更喜欢将条件提取到变量中:

<c:set var="conditionVar" value="#{expression}"/>

然后,您可以根据需要多次使用条件变量:

...
<c:if test="#{conditionVar}">
       ...
</c:if>
<c:if test="#{!conditionVar}">
       ...
</c:if>
...
<c:if test="#{conditionVar}">
       ...
</c:if>
<c:if test="#{!conditionVar}">
       ...
</c:if>
...

c:choose元素适用于更复杂的情况,但是如果您仅需要if,则我认为这种方法更好。它高效且具有以下优点:

  • 如果正确选择了变量名,则更具可读性
  • 可重用,因为提取了条件并生成了结果 变量可以在其他if和其他表达式中重用。不鼓励多次写入相同条件(并对其进行评估)。

答案 6 :(得分:-1)

根据时间复杂度前景,这是一种很好且有效的方法。一旦获得真实条件,此后将不再检查其他任何内容。在多个If中,它将检查每个条件。

   <c:choose>
      <c:when test="${condtion1}">
        do something condtion1
      </c:when>
      <c:when test="${condtion2}">
        do something condtion2
      </c:when>
      ......
      ......
      ...... 
      .......

      <c:when test="${condtionN}">
        do something condtionn N
      </c:when>


      <c:otherwise>
        do this w
      </c:otherwise>
    </c:choose>