不理解JspTagException:"非<,>>样式标签,没有<choose>作为其直接父级

Egg*_*olk 10 java jsp nested jstl

我一直盯着下面的标签嵌套大约一个小时,我仍然无法弄清楚为什么我一直得到一个JspTagException:

"Illegal use of <when>-style tag without <choose> as its direct parent"
Run Code Online (Sandbox Code Playgroud)

您是否不允许在JSTL中深入嵌套条件标签?

<c:choose>
    <c:when test="${rec.image1Available}">
    <img alt="altname" src="/img1.jpg" alt="altname" />
    <c:otherwise>
    <c:choose>
        <c:when test="${rec.image2Available}">
        <img alt="altname" src="/img2.jpg" alt="altname" />
            <c:otherwise>
            <c:choose>
                <c:when test="${rec.image3Available}">
                <img alt="altname" src="img3.jpg" alt="altname" />
                    <c:otherwise>
                    <img alt="altname" src="/holder.jpg" alt="altname" />
                    </c:otherwise>
                </c:when>
            </c:choose>
            </c:otherwise>
        </c:when>
    </c:choose>
    </c:otherwise>
    </c:when>
</c:choose>
Run Code Online (Sandbox Code Playgroud)

Asa*_*aph 16

您有<c:otherwise>嵌套 <c:when>标签内的标签.这两个标签需要彼此对等.试试这个:

<c:choose>
    <c:when test="${rec.image1Available}">
        <img src="/img1.jpg" alt="altname" />
    </c:when>
    <c:otherwise>
        <c:choose>
            <c:when test="${rec.image2Available}">
                 <img src="/img2.jpg" alt="altname" />
            </c:when>
            <c:otherwise>
                <c:choose>
                    <c:when test="${rec.image3Available}">
                        <img src="img3.jpg" alt="altname" />
                    </c:when>
                    <c:otherwise>
                        <img src="/holder.jpg" alt="altname" />
                    </c:otherwise>
                </c:choose>
            </c:otherwise>
        </c:choose>
    </c:otherwise>
</c:choose>
Run Code Online (Sandbox Code Playgroud)

顺便说一句:您alt在每个<img>标签中都列出了两次属性.我在答案中删除了额外的那些.


axt*_*avt 5

你有<c:otherwise>里面<c:when><c:otherwise>应如下使用:

<c:choose>
    <c:when ... >
        1st alternative
    </c:when>
    <c:when ... >
        2nd alternative
    </c:when>
    ...
    <c:otherwise>
        otherwise
    </c:otherwise>
</c:choose>
Run Code Online (Sandbox Code Playgroud)