JSP中EL表达式和JSTL使用示例

EL表达式

<!--1.获取jsp四大域对象的数据-->
${name} ${arrs[0]} ${list[0]} ${map.aaa} ${object.id} ${userList[0].username}
<!--2.执行运算-->
算数运算:${ n1 + n2 + n3 }
关系运算:${ n1 eq n2 } 相当于 ${ n1 == n2 } 
		 ${ n1 ne n2 } 相当于 ${ n1 != n2 }
		 ${ n1 gt n2 } 相当于 ${ n1 > n2 }
		 ${ n1 lt n2 } 相当于 ${ n1 < n2 }
		 ${ n1 ge n2 } 相当于 ${ n1 >= n2 }
逻辑运算:${ n1<n2 && n3 < n4 }  ${ n1<n2 || n3 < n4 } ${ !(n1 < n2) }  
三元运算:${ n1 < n2 ? "正确":"错误" }
empty运算: ${ empty user }  ${ not empty user }
<!--3.注意事项-->        
//EL表达式不支持字符串拼接,否则会报"for input String '...'"异常
//${ map.aaa } 相当于 ${map["aaa"]} ,如果有特殊字符存在,必须采用[]运算符
//EL表达式获取的对象如果是null,返回的是“”。因此,EL表达式中永远不会出现空指针异常                                                              

JSTL标签库

<!--引入-->
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix='fmt' uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<!--core核心标签-->
c:if		<c:if test="${flag }">show</c:if>
c:forEach	 <c:forEach items="${list}" var="user" varStatus="status">${user.name}</c:forEach>
	其他属性:begin、end、step分别表示:起始序号,结束序号,跳跃步伐。
	varStatus属性常用参数:
	${status.index}      输出行号,从0开始。
	${status.count}      输出行号,从1开始。
	${status.current}   当前这次迭代的(集合中的)项
	${status.first}  判断当前项是否为集合中的第一项,返回值为true或false
	${status.last}   判断当前项是否为集合中的最后一项,返回值为true或false
c:set		<c:set var="n1" value="30" scope="page"></c:set>
c:out		<c:out value="${ n1 }" default="北京"></c:out>
<!--fmt国际化标签-->
<fmt:parseDate value="${bean.abuildtime}" pattern="yyyyMMddHHmmss" var="time"/>   
<fmt:formatDate value="${time}" pattern="yyyy-MM-dd HH:mm:ss"/>
<!--fn函数库标签-->
${ fn:contains("Hello World","Hello") }
${ fn:length("HelloWorld") }
${ fn:toLowerCase("ABCDE") }
<c:forEach var="i" items='${ fn:split("a-b-c-d","-") }'>${ i }</c:forEach>

项目中使用

<!-- 普通获取数据------------------------------------------------------------------------>
<c:forEach items="${areas }" var="bean" varStatus="status">
    <li data-value="${bean.aaid }" onclick="choose(this)">${bean.aname }</li>
</c:forEach>
<c:if test="${result eq 'success'}">
		<script type="text/javascript">
			alert("success");
		</script>
</c:if>

<!-- 详情页面回写数据-------------------------------------------------------------------->
<!-- 回写数据 -->
<select class="select" disabled="disabled">
    <option value="${bean.baid }">
        <c:if test="${bean.baid eq null }">---</c:if>
        <c:if test="${bean.baid ne null }">${bean.bname }</c:if>
    </option>
</select>
<!-- 多选框,数据库存的数字数组和字典表 -->
<c:forEach items="${list }" var="user" varStatus="status">
    <input type="checkbox" disabled="disabled" name="user_id" value="${user.id }" 
        <c:if test="${fn:contains(bean.user_id,user.id) }">checked="checked"</c:if>>${user.name }
</c:forEach>

<!-- 搜索页面回写搜索状态----------------------------------------------------------------->
<!-- 下拉列表(option从域对象获取) -->
<select name="b-aid-eq" class="select" onchange="">
    <option value="" >请选择</option>
    <c:forEach items="${areas}" var="column">						
        <option value="${column.aaid }" 
	        <c:if test="${query.b_aid_eq eq column.aaid}">
	        selected="selected"</c:if>>${column.aname }
        </option>
	</c:forEach>
</select>
<!--下拉列表(option自己设置) -->
<select name="a-house_renovation-eq" class="select" onchange="">
    <option value="" >请选择</option>
    <option value="1" <c:if test="${query.a_house_renovation_eq eq '1'}">selected="selected"</c:if>>普通住宅</option>
	<option value="2" <c:if test="${query.a_house_renovation_eq eq '2'}">selected="selected"</c:if>>商业住宅</option>
	<option value="3" <c:if test="${query.a_house_renovation_eq eq '3'}">selected="selected"</c:if>>商住两用</option>
	<option value="4" <c:if test="${query.a_house_renovation_eq eq '4'}">selected="selected"</c:if>>门面房</option>
<option value="5" <c:if test="${query.a_house_renovation_eq eq '8'}">selected="selected"</c:if>>工厂</option>
</select>

猜你喜欢

转载自blog.csdn.net/tt_fan/article/details/82723987