您的位置:首页 > Web前端 > JavaScript

jsp-el和jstl

2015-03-07 09:00 267 查看
<pre class="java" name="code">-----------------------******************el必须存在域中!!!!!  java项目都可以使用 -----------------------******************
常用:
value= "${pushMsg.title!=''?pushMsg.title :'无标题'}"
<pre class="java" name="code">value= "${pushMsg.title!=null?pushMsg.title :'无标题'}" // 项目中不一定哪个能用,都试试!


El表达式判断是否为空字符串

${empty 值} 返回true ,表示为空字符串;

e.g <c:if test=" ${empty chapterlist} ">

<td>青蛙,是个笨蛋!!!</td>

</c:if>

El表达式判断是否为空

${值 eq null } 返回true 的话,表示为空

<c:if test="${chapterlist eq null }">

<td>青蛙,是个笨蛋!!!</td>

</c:if>

实际案例:

详情页面的数据回显

<td  class="td_right"> // 三元运算符判断标题是否为空:
<input disabled id="titleContent" name="title" style="width:171px;" value= "${pushMsg.title!=null?pushMsg.title :'无标题'}">
</td> // if判读radio是否选中
<td class="td_right" id="why">
<input disabled id="jishi" type="radio" name="timerSign" value="0" <c:if test="${pushMsg.timerSign == 0 }">checked="checked"</c:if>/>即时发送
       
<input disabled id="dingshi" type="radio" name="timerSign" value="1"<c:if test="${pushMsg.timerSign == 1 }">checked="checked"</c:if>/>定时发送       
发送时间:<input id="sendDate" name="strPushDate" disabled value="${pushMsg.arrivalDate}"/>
</td>// for + if判断checkBox是否被选中

<td id="pushObj" class="td_right">
<input disabled id="Android" type="checkbox" name="pushObj"   value="0" <c:forEach items="${pushMsg.pushObj}" var="a">  <c:if test="${a == 0}">checked="checked"</c:if> </c:forEach>/><lable>Android</lable>
<input disabled id="iOS" type="checkbox" name="pushObj"  value="1" <c:forEach items="${pushMsg.pushObj}" var="a">  <c:if test="${a == 1}">checked="checked"</c:if> </c:forEach>/><lable>iOS</lable>
</td>


获取数据(1)
使用EL表达式获取数据语法:“${标识符}”
EL表达式语句在执行时,会调用pageContext.findAttribute方法,用标识符为关键字,分别从page、request、session、application四个域中查找相应的对象,找到则返回相应对象,找不到则返回”” (注意,不是null,而是空字符串)。
示例:${user}
${p.name}:调用域中名称为p 对象的getName方法,点运算符用于获取属性的取值
${p.address.city }如果address没有new ,是不显示值的 ,空指针不显示值

${p.address.city}<br/>
${p.class}<br/> 完整包名
${p['class']}<br/>
<input type="text" value='${p["class"]}'/>对
<input type="text" value="${p['class']}"/>对
<input type="text" value='${p['class']}'/>错

获取数据(2)
EL表达式也可以很轻松获取JavaBean的属性,或获取数组、Collection、Map类型集合的数据,例如:
${user.address.city}
${user.list[0]}:访问有序集合某个位置的元素
${map.key}  或者 ${map["key"]} : 获得map集合中指定key的值

<!-- 获取数组中指定的元素 -->
<%
String str[] = {"a","b","c"};
pageContext.setAttribute("str",str);
%>
${str[1]}<br/>
${str[100] }<br/>
<!-- 获取List中指定的元素 -->
<%
List list = new ArrayList();
list.add("aa");
list.add("bb");
list.add("cc");
pageContext.setAttribute("list",list);
%>
${list[2]}
<hr/>
<!-- 获取Map中指定的元素 -->
<%
Map map = new LinkedHashMap();
map.put("a","aaa");
map.put("b","bbb");
map.put("c","ccc");
pageContext.setAttribute("mm",map);
%>
${mm.b }<br/>
<%
Map map1 = new LinkedHashMap();
map1.put("1","aaa");
map1.put("2","bbb");
map1.put("3","ccc");
pageContext.setAttribute("mm1",map1);
%>
${mm1["3"] }<br/>
<hr/>
<%
Map map2 = new LinkedHashMap();
map2.put("a",new Person("葛付以","男",true));
map2.put("b",new Person("余睿","女",false));
map2.put("c",new Person("蒋小平","女",true));
pageContext.setAttribute("mm2",map2);
%>
${mm2["a"].name}
${mm2["b"].name}
${mm2.c.name}

Tip: 执行运算

empty运算符:如果判断的对象是null或者空字符串,都返回true。
对于集合,即使集合对象本身不是null,没有任何元素,也返回true。

EL表达式不支持字符串连接操作。
******	empty运算符:检查变量是否为null或“空”,很好用!!!
******  三元表达式:${user!=null?user.name : “”} ,很好用!!!
[ ] 和 . 号运算符

<body>
<jsp:useBean id="p" class="cn.itcast.domain.Person"></jsp:useBean>
${empty p}<br/>   p是空的 返回true
${empty "" }<br/> true
<hr/>
<%
List list = new ArrayList();
list.add("aaa");
pageContext.setAttribute("list",list);
%>
${empty list }
<hr/>
<%
session.setAttribute("user","gfy");
%>
${empty user?"请登录":"欢迎您"}${user}<br/>
<%
// 0 女  1 男
pageContext.setAttribute("gender","0");
%>
${gender=="0"?"女":"男"}
</body>

Tip:获得web开发常用对象
EL表达式语言中定义了11个隐含对象,使用这些隐含对象可以很方便地获取web开发中的一些常见对象,并读取这些对象的数据。
语法:${隐式对象名称}  :获得对象的引用


============================================================
------------------------------------------------------------
王昭廷的笔记

*****四、EL表达式
它只是JSP中的表达式,不是一种开发语言。
基本语法:${EL表达式}
4.1获取数据
*****EL表达式只能获取四大域中的数据。
EL表达式获取的对象如果是null,页面不会显示数据。因此,EL表达式中永远不会出现空指针异常
p.name:调用域中名称为p对象的getName方法,点运算符是用于获取属性的取值的。

.运算符:
[]运算符:.运算符能做的,[]也能做。[]能做的,.不一定能做。
比如${p.name}===${p['name']}==${p["name"]}

[]优秀在:可以取不符合Java命名规范的东东。

4.2数学逻辑运算:
empty运算符:如果判断的对象是null或者空字符串,都返回true。
对于集合,即使集合对象本身不是null,没有任何元素,也返回true。

EL表达式不支持字符串连接操作。

4.3获取JSP的内置对象(11大EL内置对象):难点,不要与JSP的内置对象和范围名称搞混
11大EL隐式对象中,其中一个是表示自身对象外,其余都是表示的Map结构

EL隐式对象名称			Java类型									备注
pageContext				javax.servlet.jsp.PageContext				与JSP中的内置对象完全相同

剩余的都是代表的Map集合
pageScope			java.util.Map								代表着PageContext页面范围域那个Map
requestScope			java.util.Map								代表着ServletRequest请求范围域那个Map
sessionScope			java.util.Map								代表着HttpSession会话范围域那个Map
applicationScope		java.util.Map								代表着ServletContext应用范围域那个Map

param				java.util.Map								代表着请求参数。key:请求参数的名称。value:请求参数的值,它是一个字符串。
paramValues			java.util.Map								代表着请求参数。key:请求参数的名称。value:请求参数的值,它是一个字符串数组。

header				java.util.Map								代表着请求消息头。key:头名称。value:头值,它是一个字符串。
headerValues			java.util.Map								代表着请求消息头。key:头名称。value:头值,它是一个字符串数组。

cookie				java.util.Map								代表客户端提交的Cookie的Map。key:cookie的name。value:cookie对象本身
initParam			java.util.Map								代表着全局初始化参数(web.xml中context-param).key:参数名称。value:参数值
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: