快捷搜索: 王者荣耀 脱发

EL表达式的常见用法和说明。(简单易懂)

EL基础语法

EL表达式只能读数据,不能修改数据。

EL表达式只能出现在静态部分,不能出现在java代码块中。

EL表达式不会抛出异常,在出现异常时,EL表达式将会以空白显示。

表达式只能从四大域中读取数据。

如果四大域内中有相同属性名,那么EL表达式将会从最小范围的域依次往最大域查找,page -> application

查找到相关内容后将会停止查找,并显示查找到的第一条数据。

<%
    //pageContext.setAttribute("number","one");
    request.setAttribute("number","two");
    session.setAttribute("number","three");
    application.setAttribute("number","four");
%>
    name = ${number}<br/>

EL从JavaBean中读取数据

从bean中读取数据时,用点运算符(.)直接像取对象属性一样取得数据。

需要注意的是:EL表达式点运算符(.)后面跟的属性名不是类的字段,而是GET/SET访问器去掉前缀的名字。

比如:getName(),取属性时应当使用name,且第一个字母需要小写。

<%
    user u = new user("张三",20,new Score(88,95,891));
    pageContext.setAttribute("stu",u);
%>
    user = ${stu}<br/>
    score = ${stu.score}<br/>
    math = ${stu.score.math}<br/>

EL从数组中读取数据

从数组中读取数据直接使用索引即可,和常规数组用法相同。

<%
    int[] number = new int[]{1,2,3};
    pageContext.setAttribute("number",number);
%>
    first = ${number[0]}<br/>
    third = ${number[2]}<br/>

EL从List中读取数据

从list中读取数据时可以直接使用索引读取。

<%
    List<Integer> nums = new ArrayList<Integer>();
    nums.add(Integer.valueOf("100"));
    nums.add(200);
    nums.add(new Integer(300));	
    pageContext.setAttribute("num",nums);
%>
first = ${num[0]}<br/>
second = ${num[1]}<br/>
third = ${num[2]}<br/>

EL从Map中读取数据

从Map中读数据,可以直接使用点运算符(.)。

key充当属性的作用,且EL表达式可以自动转型,以适应原始类型。

<%
    Map<String,Object> map = new HashMap<String,Object>();
    map.put("张三",new user("zhangsan",21,new Score(80,88,90)));
    map.put("李四",new user("lisi",22,new Score(89,87,96)));
    map.put("王五",new user("wangwu",23,new Score(60,99,75)));
    map.put("fruit","banana");
    pageContext.setAttribute("map",map);
%>
    张三 = ${map.张三.score.chinese}<br/>
    李四 = ${map.李四.score}<br/>
    王五 = ${map.王五}<br/>
    fruit = ${map.fruit}<br/>
经验分享 程序员 微信小程序 职场和发展