我想做以下事情:
<c:choose>
<c:when test="${empty example1}">
</c:when>
<c:otherwise>
<c:when test="${empty example2}">
</c:when>
<c:otherwise>
</c:otherwise>
</c:otherwise>
</c:choose>
这甚至可能吗?我试图运行时抛出异常。
谢谢。
答案 0 :(得分:17)
你需要更像这样:
<c:choose>
<c:when test="${empty example1}">
<!-- do stuff -->
</c:when>
<c:otherwise>
<c:choose>
<c:when test="${empty example2}">
<!-- do different stuff -->
</c:when>
<c:otherwise>
<!-- do default stuff -->
</c:otherwise>
</c:choose>
</c:otherwise>
</c:choose>
这里显示的详细程度是XML为实现多级条件语句的不良语言的一个很好的例子。
答案 1 :(得分:10)
您可以在<c:when>
中使用多个<c:choose>
。
<c:choose>
<c:when test="${empty example1}">
</c:when>
<c:when test="${empty example2}">
</c:when>
<c:otherwise>
</c:otherwise>
</c:choose>
答案 2 :(得分:0)
我同意@BalusC - 您可以简化声明。请记住,c:when
语句是互斥的,例如if-else if
块。
JSTL 1.2 spec表示c:choose
必须是至少一个c:when
语句的父级,并且c:when
必须始终位于至少一个c:otherwise
语句之前与同一直系亲。从本质上讲,这也意味着每个c:when
必须在c:otherwise
内跟随c:choose
,而c:choose
必须包围任何c:when
+ c:otherwise
}。从我所看到的,规范并不是指嵌套c:choose
元素,所以我不知道它是否有效 - 但我认为你不会被迫嵌套它们。