Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“我该怎么做?”;嵌套if";在JSTLforJavaJSP中?_Java_Jsp_Jstl - Fatal编程技术网

“我该怎么做?”;嵌套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逻辑方面仍然是一种非常糟糕的语言。我不同意这总是可能的。我的场景在用户没有特定权限时以表单形式显示消息。然后显示一组单选按钮,如果它们确实具有这些权限。嵌套在其中的是另一个条件单选按钮,提供给更多的用户子集。谢谢大家的讨论!我讨厌劫持,但你能看看这个吗。非常感谢,再次抱歉!必须引起某人的注意:)这通常不是“嵌套”的意思。