Не понимаю JspTagException: «Незаконное использование тега <when>в стиле без <choose>в качестве его прямого родителя - PullRequest
9 голосов
/ 06 сентября 2010

Я пристально смотрю на вложение тегов ниже уже около часа и до сих пор не могу понять, почему я получаю JspTagException:

"Illegal use of <when>-style tag without <choose> as its direct parent"

Вам не разрешено вложитьусловные теги это глубоко в 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>

Ответы [ 2 ]

15 голосов
/ 06 сентября 2010

У вас есть <c:otherwise> вложенные теги внутри <c:when> тегов.Эти 2 тега должны быть равны друг другу.Попробуйте:

<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>

Кстати: у вас есть alt атрибутов, перечисленных дважды в каждом из ваших <img> тегов.Я удалил лишние в своем ответе.

3 голосов
/ 06 сентября 2010

У вас есть <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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...