您的位置:首页 > 其它

EL表达式学习笔记

2015-06-06 18:19 253 查看
如果你将一个字符串放进request里面,如果我们用jsp的知识来在前台取的数据,如下所示:

<%= request.getAttribute("hello") %>


但如果用EL表达式的话,就可以写成下面的样子:

${hello }


说明一下:

el表达式的隐含对象为pageScope, requestScope, sessionScope, applicationScope

如果未指定scope,它的搜索顺序为:pageScope~applicationScope,当然我们可以显式的指定EL表达式的scope:

${requestScope.hello }


假设我们把一个user对象扔进request,user对象包含username, age等信息,我们怎么取出该对象的username和age信息呢:

${user.username }
${user.age }


注意:user对象应该提供getUserName()和getAge()方法,因为EL表达式其实是调用类似的方法来取得相应的内容。

现在假设后台是把一个map对象扔进了request里面,代码如下:

Map<String, String> map = new HashMap<>();
map.put("key1", "value1");
map.put("key2", "value2");

request.setAttribute("map", map);


那么如何在前台取得key1和key2对应的值呢?可以用下面的方法:

${map.key1 }
${map.key2 }


但是如果后台现在你不知道传回多少数据,需要遍历的话,EL表达式是完成不了的,这就需要配合JSTL表达式来完成,后面将会讲解

假设现在后台中是一个字符串数组:

String[] arr = {"a", "b", "c"};

request.setAttribute("arr", arr);


则前台是这样来获得第二个元素:

${arr[1] }


但如果是对象数组,例如是10个user对象的数组,我们现在来取得第二个user对象的姓名:

${arr[1].username }


如果是List容器,取法跟数组一样:

${arr[1].username }


EL表达式对运算符的支持:

假设要计算1+2 :
${1+2 }
便可

除法 : 10/5 :
${10/5 }
也可以写成
${10 div 5 }


取余 : 10 % 3 :
${10%3 }
或者
${10 mod 3 }


等于 :
${10==10 }
或者
${10 eq 10 }


不等于 :
${10 != 10 }
或者
${10  ne 10 }


小于 :
${8 < 10 }
或者
${8 lt 10 }


大于 :
${8 > 10 }
或者
${8 gt 10 }


小于等于 : <= | le

大于等于 : >= | ge

and : && | and

或 : || | or

非 : ! | not

对于取出来的数据是不是为空,可以用下面的函数:

${empty value }


对于不存在,或者你在request里面设置的null, 或者数组,字符串,list,map等容器的长度为0的情况下都会输出true,其他情况输出false
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: