Как узнать, доступен ли атрибут тега jsp для EL? - PullRequest
1 голос
/ 02 октября 2008

У меня есть следующий кусок кода в моем JSP:

<% pageContext.setAttribute("warnings",Globals.WARNING_MESSAGES); %>
<c:choose>
    <c:when test="${requestScope[pageScope.warnings] or sessionScope[pageScope.warnings]}">
        <html:errors header="warnings.header" footer="warnings.footer" prefix="warnings.prefix" suffix="warnings.suffix"/>
        <c:remove var="${pageScope.warnings}" scope="session"/>
    </c:when>
    <c:otherwise>
        <html:errors/>
    </c:otherwise>
</c:choose>

Интересно, есть ли вообще (не углубляясь в исходный код) знать, доступен ли атрибут для EL-кодирования?

В этом коде я хотел бы использовать переменную сценария, определенную как константа, которую я установил в контейнере pageScope. Я хотел бы использовать тот же механизм, когда я удаляю переменную из sessionScope, ссылающуюся на переменную скриптинга, но кажется, что атрибут <c:remove var> отказывается интерпретировать мою переменную скриптинга, и это разрушает все усилия, направленные на ссылку на мое объявление константы. Я могу использовать скрипт jsp, чтобы обойти это, но есть ли «лучший» способ сделать это?

1 Ответ

1 голос
/ 04 октября 2008

Я не уверен, что понимаю ваш вопрос, но я думаю, что вы ищете «пустой» оператор для EL, чтобы проверить, существует ли атрибут:

<c:if test="${empty pageScope.warnings}">
//do something
</c:if>

Это вернет true, если pageScope.warnings не определен (null).

...