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 += ",";
              }
              }

posted @ 2017-11-22 09:50  努力奋斗的喵喵  阅读(330)  评论(0编辑  收藏  举报