EL: как печатать статические переменные? - PullRequest
2 голосов
/ 05 мая 2011

У меня есть следующая страница JSP:

<%@taglib uri="http://java.sun.com/jstl/core" prefix="c"%>
test #1: value of PI is <c:out value="${java.lang.Math.PI}" />.
test #2: value of PI is ${java.lang.Math.PI}.
test #3: value of PI is <%= java.lang.Math.PI %>.

Каким-то образом только тест № 3 имеет выход. почему EL не распечатывает значения статических переменных?

1 Ответ

5 голосов
/ 05 мая 2011

Для каждого из ваших примеров вот что происходит:

<c:out value="${java.lang.Math.PI}" />

Это ищет переменную или бин с именем java и пытается выполнить метод с именем lang. Вероятно, на вашей JSP-странице нет переменной или компонента, называемого Java, поэтому выходных данных нет.

${java.lang.Math.PI}

Это то же самое, что и выше, только написано только с использованием EL. Это то же самое, что он ищет переменную или бин с именем java.

<%= java.lang.Math.PI %>

Во время компиляции JSP выполняется вычисление java.lang.Math.PI и его запись в JSP. Если вы посмотрите на скомпилированный JSP, то увидите значение, записанное там.

Третий пример оценивает выражение, как если бы вы были в классе Java. В первых двух примерах ожидается, что java будет именем переменной.

...