我是JSP EL的新手。我正在阅读一些EL文本并获得以下代码:
<body>
<h1>Hello World!</h1>
<%
String s1 = "aaa ";
String s2 = "22";
Double dObj = new Double(3.5);
int a;
a = 12;
%>
s1 + s2 = ${ s1 + s2 } <br>
a + 2 = ${a + 2} <br>
dObj + 2 = ${dObj + 2} <br>
2 + 2 = ${"2" + 2}
</body>
结果:
s1 + s2 = 0 (1)
a + 2 = 2 (2)
dObj + 2 = 2 (3)
2 + 2 = 4 (4)
我能理解(4)的结果,但对(1),(2)和(3)的结果没有任何想法。任何人都可以详细说明吗?
答案 0 :(得分:2)
EL变量引用页面,或请求,会话或应用程序范围属性(按顺序检查每个范围)。它们不引用本地scriptlet变量。
因此,由于您在名为s1
,s2
,a
或dObj
的任何范围内都没有任何属性,因此会使用默认值({{1} })。
如果scriptlet代码如下,结果将是您期望的结果:
0
在架构良好的应用程序中,这些属性将由调度到JSP的servlet设置,或者由JSP标记(例如 <%
String s1 = "aaa ";
String s2 = "22";
Double dObj = new Double(3.5);
int a;
a = 12;
request.setAttribute("s1", s1);
request.setAttribute("s2", s2);
request.setAttribute("dObj", dObj);
request.setAttribute("a", a);
%>
)设置,而不是由scriptlet设置。不应再使用Scriptlet了。
答案 1 :(得分:0)
只需google“JSP EL算术”,您应该找到很多示例,例如:http://www.roseindia.net/jsp/simple-jsp-example/ExpressionLanguageBasicArithmetic.shtml
结果取决于如何在EL {}标记内评估对象。