EL:如何打印静态变量?

时间:2011-05-05 04:10:35

标签: java jsp el

我有以下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 个答案:

答案 0 :(得分:5)

对于您的每个示例,这都是正在发生的事情:

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

这是在寻找名为java的变量或bean,并尝试在其上执行一个名为lang的方法。您的JSP页面中可能没有名为Java的变量或bean,因此没有输出。

${java.lang.Math.PI}

这与上面相同,仅使用EL编写。它是一样的,因为它正在寻找一个名为java的变量或bean。

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

这是在JSP编译期间,正在计算java.lang.Math.PI并将其写入JSP。如果查看编译后的JSP,您将看到写入的值。

第三个例子是评估表达式,就好像你在Java类中一样。前两个示例期望'java'是变量名。