zoukankan      html  css  js  c++  java
  • EL表达式

    1、为什么要用EL表达式?

      为了使JSP写起来更加简单,使用起来更方便,避免了在jsp页面嵌套Java代码。

      例如:< %=request. getParameter(“username”)% > 等价于 ${ param. username },<%=user.getAddr( ) %> 等价于 ${user.addr}

    2、要想在jsp页面使用EL表达式,应该注意什么?

      首先查看web.xml中配置的<web-app>标签,jsp servlet版本

      使用Servlet2.4的描述符的JSP页面默认是解析EL表达式,即表达式有效。而使用Servlet2.3或者更早的描述符的JSP页面默认是忽略EL表达式的,即不解析EL表达式,就导致了出现EL表达式无效

      如果想在某个页面使用el表达式可以在在使用el表达式的jsp中配置:<%@page isELIgnored="false" %>

      如果想在所有页面使用el表达式,要么直接修改web.xml的版本。要么添加配置:

     <jsp-config>
        <jsp-property-group>
            <url-pattern>*.jsp</url-pattern>
              <el-ignored>false</el-ignored>
              <scripting-invalid>true</scripting-invalid>
          </jsp-property-group>
      </jsp-config>

    3、EL的基本语法

      EL表达式语法:以${开头,以}结束,中间为合法的表达式

      具体语法格式如下:${expression}

      参数说明:expression:指定要输出的内容,可以是字符串,也可以是由EL运算符组成的表达式。

      EL 存取变量数据的方法很简单,例如:${username}。它的意思是取出某一范围中名称为username的变量。因为我们并没有指定哪一个范围的username,所以它的默认值会先从Page 范围找,假如找不到,再依序到Request、Session、Application范围。假如途中找到username,就直接回传,不再继续找下去,但是假如全部的范围都没有找到时,就回传null,当然EL表达式还会做出优化,页面上显示空白,而不是打印输出NULL。

      EL 提供 . 和 [ ] 两种运算符来导航数据。下列两者所代表的意思是一样的:

      ${sessionScope.user.sex}等于${sessionScope.user["sex"]}

      . 和 [ ] 也可以同时混合使用,如下:

      ${sessionScope.shoppingCart[0].price}

      回传结果为shoppingCart中第一项物品的价格。

      不过,以下两种情况,两者会有差异:

      (1) 当要存取的属性名称中包含一些特殊字符,如. 或 – 等并非字母或数字的符号,就一定要使用 [ ],例如:${user.My-Name }

        上述是不正确的方式,应当改为:${user["My-Name"] }

      (2) 我们来考虑下列情况:

        ${sessionScope.user[data]}

        此时,data 是一个变量,假若data的值为"sex"时,那上述的例子等于${sessionScope.user.sex};

        假若data 的值为"name"时,它就等于${sessionScope.user.name}。因此,如果要动态取值时,就可以用上述的方法来做,但. 无法做到动态取值。

    4、结合实际举例

      例如在页面展示的时候,我想在前台获取后台传过来的一个map,通过key值,获取自己想要的信息

      后台代码:
                        Map<String, Object> tagStaffIds

           model.addAttribute("tagStaffIds", JSONObject.fromObject(tagStaffIds).toString()); //最好先将Map 变成json字符串。然后传递到前台

      前台代码:

           var tsMap = eval('(' + '${tagStaffIds}' + ')');

             var tagStaffName=“”;
             for(var i = 0; i < tidsArr.length; i++){
                   var key = tidsArr[i];
                   var value = tsMap[key];

              if(value.tagSids!=""){
                       tagStaffName += value.tagName;
                       tagStaffName += ",";
                  }
                  }

  • 相关阅读:
    hdu 1269 迷宫城堡(强联通分量,基础)
    hdu 2102 A计划(BFS,基础)
    python 变量命名规范
    rpm常用选项
    memcached
    session共享
    Nginx高级使用
    nginx 反向代理
    Nginx基本使用
    github 建立博客
  • 原文地址:https://www.cnblogs.com/llfddmm/p/7877757.html
Copyright © 2011-2022 走看看