“我该怎么做?”;嵌套if";在JSTLforJavaJSP中?
我想做如下事情:“我该怎么做?”;嵌套if";在JSTLforJavaJSP中?,java,jsp,jstl,Java,Jsp,Jstl,我想做如下事情: <c:choose> <c:when test="${empty example1}"> </c:when> <c:otherwise> <c:when test="${empty example2}"> </c:when> <c:otherwise> </c:otherwise>
<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>
这可能吗?我在尝试运行时引发异常
谢谢。您需要像这样做:
<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对于实现多级条件语句来说是一种糟糕的语言。您可以在
中使用多个
<c:choose>
<c:when test="${empty example1}">
</c:when>
<c:when test="${empty example2}">
</c:when>
<c:otherwise>
</c:otherwise>
</c:choose>
我同意@BalusC的观点——你可以简化这个陈述。记住c:when
语句是互斥的,就像if-else-if
块一样
声明
c:choose
必须是至少一个c:when
语句的父语句,并且c:when
必须始终位于至少一个具有相同直接父语句的c:orwise
语句之前。本质上,这也意味着每个c:when
必须在c:choose
中有一个c:others
,并且c:choose
必须围绕任何c:when
+c:others
。从我所看到的,规范没有提到嵌套c:choose
元素,所以我不知道它是否有效——但我认为你永远不会被迫嵌套它们。也许是这样,但这种详细程度是不必要的@BalusC下面有一个更优雅、更易读的解决方案。它的意思是一样的,因为c:when
后面跟着c:others
与if else if
是一样的。这很公平,但即使是另一个例子也很冗长。例如,c:choose
不增加任何人类可读性方面的价值,也不必将逻辑条件指定为test=
,等等。我的例子可以简化,但XML在表示if/elseif/else逻辑方面仍然是一种非常糟糕的语言。我不同意这总是可能的。我的场景在用户没有特定权限时以表单形式显示消息。然后显示一组单选按钮,如果它们确实具有这些权限。嵌套在其中的是另一个条件单选按钮,提供给更多的用户子集。谢谢大家的讨论!我讨厌劫持,但你能看看这个吗。非常感谢,再次抱歉!必须引起某人的注意:)这通常不是“嵌套”的意思。