我有以下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 %>.
Run Code Online (Sandbox Code Playgroud)
不知何故,只有测试#3有输出.为什么EL不打印出静态变量的值?
对于您的每个示例,这都是正在发生的事情:
<c:out value="${java.lang.Math.PI}" />
Run Code Online (Sandbox Code Playgroud)
这是在寻找名为java的变量或bean,并尝试在其上执行一个名为lang的方法.您的JSP页面中可能没有名为Java的变量或bean,因此没有输出.
${java.lang.Math.PI}
Run Code Online (Sandbox Code Playgroud)
这与上面相同,仅使用EL编写.它是相同的,因为它正在寻找一个名为java的变量或bean.
<%= java.lang.Math.PI %>
Run Code Online (Sandbox Code Playgroud)
这是在JSP编译期间,正在计算java.lang.Math.PI并将其写入JSP.如果查看编译后的JSP,您将看到写入的值.
第三个示例是评估表达式,就像您在Java类中一样.前两个示例期望'java'是变量名.
归档时间: |
|
查看次数: |
6667 次 |
最近记录: |