日期:2014-05-16  浏览次数:20376 次

JSTL的使用
JSTL标签
①,JSTL标签的EL表达式
使用很简单,不用在JSP中写入支持标签的语句,直接可以拿来用。
${hello}        等同于    <%= request.getAttribute("hello") %>
EL表达式还支持四则运算,大小比较(返回true或false),为空验证(${empty hello},返回true或false),还支持如${group.name}   ${map.key}返回相应的值

②,JSTL核心库 (c标签)
首先,你要把jar包引进去,这里有个问题,如果是struts1.3.10的话,其自带的jstl包是1.0版本,而1.0版本的jstl在2.0的JSP中,会有问题。所以要下个1.1以上版本的jstl包,下载地址在此:http://jakarta.apache.org/site/downloads/downloads_taglibs-standard.cgi
然后,在JSP中加入支持标签的语句,<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
⑴,c:out 就是做输出
<c:out value="${hello}"/>    等同于    ${hello}
<c:out value="${abc}" default="haha"/>       如果${abc}不存在,那么给一个初始值haha
    
String HTML = "<font color='red'>北京欢迎你</font>";
request.setAttribute("bj", HTML);     action中把值送出来

<c:out value="${bj}" escapeXml="false">   escapeXml:是否脱离XML语法,不是的话,就还是按照HTML语法解析,输出结果:北京欢迎你
⑵,c:set , c:remove
c:set 等于在page级别,setAttribute一个值,在当前页面用c:out可以接收到,例如:
<c:set value="beckham" var="player"/>
c:remove就是把一个属性值从当前page中删了,例如:
<c:remove var="player"/>
⑶,c:if    就是个条件分支语句,只能表达出if,没有else
<c:if test="${1 < 2}" var="result">
    1 < 2<br>
    ${result }<br>
   </c:if>
输出结果:
1 < 2
true

⑷,c:choose,c:when,c:otherwise,其实也是个条件分支语句,不过这次可以形成if。。。else的组合了^_^  
c:when就是if,c:otherwise就是else,要注意的是c:when,c:otherwise必须写在c:choose标签的里面
<c:choose>
    <c:when test="${v1 < v2}">
     v1 < v2<br>
   </c:when>
    <c:otherwise>
     v1 > v2<br>
   </c:otherwise>
</c:choose>

⑸,c:forEach, 就是个循环
      <c:forEach items="${userList}" var="user">   ←这里的var相当于把一个对象Attribute取出来后,给这个对象起的名字(也就是这个对象的引用),下面就可以用这个引用来显示该对象的属性
       <tr>
        <td>${user.username }</td>
        <td>${user.age }</td>
        <td>${user.group.name }</td>
       </tr>
      </c:forEach>
输出结果如下
name age group
選手 0 20 AC milan
選手 1 21 AC milan
選手 2 22 AC milan
選手 3 23 AC milan
選手 4 24 AC milan

■ c:forEach中的varStatus属性 ,varStatus可以记录本次循环的一些信息,比如现在循环到第几次啦,就是vs.count ,下面这个例子,当循环进行到偶数次时,改变背景颜色为黄色
<c:forEach items="${userList}" varStatus="vs" var="user">
       <c:choose>
        <c:when test="${vs.count % 2 == 0}"> ←如果是偶数次,背景色变为黄色
         <tr bgcolor="yellow">
        </c:when>
        <c:otherwise>     ←如果步是偶数次,背景色不变
         <tr>
        </c:otherwise>
       </c:choose>
          <td>${user.username }</td>
          <td>${user.age }</td>
          <td>${user.group.name }</td>
         </tr>