Вопрос о некоторых расчетах с использованием JSP EL? - PullRequest
0 голосов
/ 19 августа 2011

Я новичок в 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 ]

2 голосов
/ 19 августа 2011

Переменные EL ссылаются на атрибут страницы, или запроса, или сеанса, или области приложения (каждая область проверяется в указанном порядке).Они не ссылаются на локальную переменную скриптлета.

Таким образом, поскольку у вас нет атрибута в любой области с именем s1, s2, a или dObj, используются значения по умолчанию (0).

Результаты будут такими, как вы ожидаете, если код скриптлета будет следующим:

    <%
    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);

    %>

В хорошо спроектированном приложении эти атрибуты будут установлены сервлетом, который отправитваш JSP или тегом JSP (например, <c:set>), но не скриптлетом.Скриплеты больше не должны использоваться.

0 голосов
/ 19 августа 2011

Просто Google "JSP EL арифметика", и вы должны найти много примеров, как здесь: http://www.roseindia.net/jsp/simple-jsp-example/ExpressionLanguageBasicArithmetic.shtml

Результаты зависят от того, как объекты оцениваются внутри тегов EL {}.

...