关于使用JSP EL进行一些计算的问题?

时间:2011-08-19 08:39:33

标签: jsp el

我是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)的结果没有任何想法。任何人都可以详细说明吗?

2 个答案:

答案 0 :(得分:2)

EL变量引用页面,或请求,会话或应用程序范围属性(按顺序检查每个范围)。它们不引用本地scriptlet变量。

因此,由于您在名为s1s2adObj的任何范围内都没有任何属性,因此会使用默认值({{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 {}标记内评估对象。