【发布时间】:2011-06-03 00:15:33
【问题描述】:
JSTL 中有 if-else 标签吗?
【问题讨论】:
JSTL 中有 if-else 标签吗?
【问题讨论】:
除了需要 else 之外,在许多情况下,您还需要在多个位置使用相同的条件。
我更喜欢将条件提取到变量中:
<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 else,我认为这种方法更好。它高效且具有以下优点:
【讨论】:
根据时间复杂度的前景,这是一种很好且有效的方法。一旦它得到一个真实的条件,它就不会在此之后检查任何其他的。在多个 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>
【讨论】:
除了 skaffman 的回答,简单的 if-else 你可以像这样使用三元运算符
<c:set value="34" var="num"/>
<c:out value="${num % 2 eq 0 ? 'even': 'odd'}"/>
【讨论】:
你必须使用这个代码:
<%@ 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>
【讨论】:
没有 if-else,只是 if。
<c:if test="${user.age ge 40}">
You are over the hill.
</c:if>
您可以选择使用选择时:
<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>
【讨论】:
我只是使用了两个 if 标签,我想我会添加一个答案,以防它对其他人有用:
<c:if test="${condition}">
...
</c:if>
<c:if test="${!condition}">
...
</c:if>
虽然技术上不是 if-else 本身,但行为是相同的,并且避免了使用 choose 标记的笨拙方法,因此根据您的要求有多复杂,这可能是更可取的。
【讨论】:
choose 标签更可取。
是的,但它很笨重,例如
<c:choose>
<c:when test="${condition1}">
...
</c:when>
<c:when test="${condition2}">
...
</c:when>
<c:otherwise>
...
</c:otherwise>
</c:choose>
【讨论】:
<c:otherwise> 似乎有点冗长,嗯?