JSTL Tag學習筆記(一)之<c: />

pengisgood發表於2013-10-26

注:本文中的例子主要來自http://www.tutorialspoint.com/jsp/jsp_standard_tag_library.htm。 

==========================================================

 

Core Tags:
在使用JSTL中的core tags的時候,首先需要引入一下庫:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 

 

1. c:out
     包含3個屬性:value(required)、default、escapeXML(預設值為true)。
     向頁面上輸出表示式的值,有點類似<%= %>的作用,不過它可以使用“.”的方式輸出一個物件中的值,例如:<c:out value="customer.address.street"/>
     當escapeXML的值為true時,還有xml特殊字元的表示式不會被求值,而是直接輸出。
     Example:

<body>
  <
c:out value="${'<tag> , &'}"/>
</
body>

     Result:

<tag> , &

2. c:set
     包含5個屬性:value、target(如果指定了target,同時也必須指定property)、property、var、scope(預設值為Page)。
     target:需要修改屬性值的物件。
     scope:決定該變數的生命週期(如session、request、page...)
     Example 1:

<body>
  <c:setvar="salary"scope="session"value="${2000*2}"/>
  <c:outvalue="${salary}"/>
</body> 

     Result:
4000
     Example 2:
 Java Code

package foo;  
public class DemoBean{  
    private String MyField;  
    public void setMyField(String s){  
        this.MyField = s;  
    }  
    public String getMyField(){  
        return this.MyField;  
    }      
}  

JSP Code 

 <body> 
  <jsp:useBean id="address" class="java.util.HashMap" />  
  <jsp:useBean id="demo" class="foo.DemoBean" />  
  <c:set target="${demo}"  property="myField" value="hello" />  
  <c:set target="${address}" property="line1" value="10 Downing St" />  
  <c:set target="${address}" property="postcode"> SW1A2AJ </c:set>
  <c:out value="${address.line1}"/>  
  <c:out value="${address.postcode}"/>  
  <c:out value="${demo.myField}"/>   
</body>  

     Result:
10 Downing Street SW1A2AJ hello
Note:在上面的例子中的<jsp:useBean/>Tag必須放在body裡面,否則可能會出錯。

3. c:if
     包含3個屬性:test(required)、var、scope。
     test:條件表示式,決定是否要執行方法體裡的內容。接收boolean值。
     scope:預設為Page。
     Example:

<body>
  <c:setvar="salary"scope="session"value="${2000*2}"/>
  <c:iftest="${salary > 2000}">
    <p>
      My salary is: <c:outvalue="${salary}"/>
    </
p>   </c:if> </body>

     Result:
My salary is:4000


4. c:choose、c:when、c:otherwise
     其中c:when包含一個屬性:test
     其實將這三個Tag類比Java中的Switch語句就很好理解了。c:choose就像switch,c:when像case,c:otherwise像default。
     Example:

<body>
  <c:setvar="salary"scope="session"value="${2000*2}"/>
  <p>
    Your salary is : <c:outvalue="${salary}"/>
  </
p>   <c:choose>    <c:when test="${salary <= 0}">    Salary is very low to survive.   </c:when>   <c:whentest="${salary > 1000}">   Salary is very good.   </c:when>   <c:otherwise>   No comment sir...   </c:otherwise>   </c:choose> </body>

     Result:
Your salary is:4000
Salaryis very good. 

5. c:forEach
     它包含6個屬性:items、begin、end、step、var、varStatus。
     用它可以在jsp中取代Java中的for、while、do-while迴圈。 
     items:需要遍歷的集合或者物件。
     begin:從哪一個元素開始,預設值為第一個元素。
     end:到哪一個元素結束,預設值為最後一個元素。
     step:遍歷的步長,預設值為1。
     var:當前的元素。
     varStatus:儲存迴圈狀態的物件。它有一些比較實用的方法:

  • getBegin():返回begin屬性的值,如果沒有設定begin屬性則返回null。
  • getEnd():返回end屬性的值,如果沒有設定end屬性則返回null。
  • getCurrent():返回遍歷時,當前的元素。
  • getStep():返回step屬性的值,如果沒有設定step屬性則返回null。
  • getIndex():返回循序的索引,從0開始。
  • getCount():返回迴圈的輪數,從1開始。
  • isFirst():返回當前是否為遍歷的第一輪。
  • isLast():返回當前是否為遍歷的最後一輪。

     Example:

<body>
  <c:forEachvar="i" begin="1" end="5">
     Item <c:outvalue="${i}"/><br>
  </c:forEach>
</body> 

     Result:
Item1
Item2
Item3
Item4
Item5


6. c:url
     它包含了4個屬性:value、context、var、scope。
     value:url值。
     context:當前web應用的名字。
     var:儲存url值的變數。
     scope:預設值為Page。
     Example:

<body>
  <a href="<c:urlvalue="/jsp/index.htm"/>">TEST</a>
</body>


7. c:param
     它包含兩個屬性:name、value。
     它一般和<c:url />一起使用,用以傳遞引數。
     Example:

<c:urlvalue="/index.jsp"var="myURL">
   <c:paramname="trackingId"value="1234"/>
   <c:paramname="reportType"value="summary"/>
</c:url>
<c:importurl="${myURL}"/>

      最後會被渲染成:

/index.jsp?trackingId=1234;reportType=summary

 












相關文章