1. 程式人生 > >Struts2之標籤庫常用標籤

Struts2之標籤庫常用標籤

基本概述:在JavaWeb中,Struts2標籤庫是一個比較完善,而且功能強大的標籤庫,它將所有標籤都統一到一個標籤庫中,從而簡化了標籤的使用,它還提供主題和模板的支援,極大地簡化了檢視頁面程式碼的編寫,同時它還提供對ajax的支援,大大的豐富了檢視的表現效果。與JSTL(JSP Standard Library,JSP 標準標籤庫)相比,Struts2標籤庫更加易用和強大。

PS:使用標籤,需要引入Struts2核心jar包,在jsp頭部,加入<%@ taglib uri="/struts-tags" prefix="s" %>即可

Struts2標籤庫的分類:


資料標籤:

1、property   

<!-- value:可選屬性,指定需要輸出的屬性值,如果沒有指定該屬性,則預設輸出ValueStack棧頂的值 -->
<s:property value="cla2.num1"/>

2、set

注:set中的var沒有放到值棧中

<s:set var="test2" value="cla2"></s:set>
<!-- 取不到值,因為標籤代表的含義是,從值棧中去找test2的num1屬性值 -->
沒加#:<s:property value="test2.num1"/>
<!-- 能取到值,因為取的是非根(不是valuestack下)物件的num1屬性值 -->
加#:<s:property value="#test2.num1"/>

頁面效果:

3、push

push表示彈棧,標籤體中即可拿到彈棧內容,結束標籤迴歸原樣

push前:<s:property/>
<s:push value="result">
   push後:<s:property/>
</s:push>
push完成後:<s:property/>

頁面效果:

4、action

作用:是為了向後臺發請求拿資料,載入初始化資料所用

<s:action name="tagAction" namespace="/sy" var="test3"></s:action>
test3:<s:property value="test3" />
test3.result:<s:property value="#test3.result" />

頁面效果:

5、url

    作用:用於存放一個路徑
    屬性:
        action:動作名稱
        namespace:名稱空間
        var:取值是一個普通字串。他會把action和namespace組成一個url作為value,把var的取值作為一個key,存入contextMap中

<s:url namespace="/sy" action="tagAction" var="test4"></s:url>
<s:a href="%{#test4}">GO</s:a>

6、param

屬於子標籤,通常是配合action、url去使用的

<s:url namespace="/sy" action="tagAction" var="test5">
   <s:param name="test6">result</s:param>
   <s:param name="test7" value="result"></s:param>
</s:url>
test5:<s:property value="test5" />

頁面效果:

7、date

   它是用於格式化輸出日期
    name屬性:取值是一個ognl表示式,表示要格式化的日期物件
    format屬性:指定格式
    var屬性:取值是一個普通的字串。
           把格式化好的日期字串作為value,把var的取值作為key。存入contextMap中

<%
   request.setAttribute("time", new Date());
%>
<s:date name="#request.time" format="yyyy-MM-dd"/>

8、debug

debug標籤用於除錯Struts2,使用它會在頁面中生成一個debug標籤,點選後會顯示伺服器各種物件資訊,包括值棧、ContextMap等

<s:debug></s:debug>

控制標籤:

1、iterator

s:iterator是struts2的一個迭代標籤,它的value屬性取值是一個OGNL表示式
var屬性:它的取值就是一個普通的字串.
用了var:把每次遍歷的物件作為value,把var的值作為key,存入ContextMap中
沒用var:把每次遍歷的物件壓入棧頂,再下次遍歷之前彈棧(從棧頂移走)

<%
   request.setAttribute("names", new String[]{"zs","ls","ww"});
%>
<ul>
   <s:iterator value="#request.names" var="i">
       <li><s:property value="#i" /></li>
   </s:iterator>
</ul>

2、if/elseif/else

          <%
          	request.setAttribute("score", new Integer(30));
          %>
          <s:if test="#request.score>80">A</s:if>
          <s:elseif test="#request.score>60">B</s:elseif>
          <s:else>C</s:else>

表單標籤:

               <s:form name="tagAction" namespace="/sy">
          		<s:textfield label="姓名" name="uname"></s:textfield>
          		<!-- 寫法一 -->
          		<s:radio list="{'男','女'}" value="'男'" label="性別" name="sex"></s:radio>
          		<!-- 寫法二 -->
          		<s:radio list="#{1:'男',2:'女'}" value="2" label="性別" name="sex2"></s:radio>
          		<s:select list="#{1:'T211',2:'T204',3:'T237' }" label="班級" name="clazz"></s:select>
          		<!-- 單選複選框:往後臺傳的是boolean型別 -->
          		<s:checkbox label="婚否" name="married"></s:checkbox>
          		<!-- 多選複選框 -->
          		<s:checkboxlist list="#{1:'吃',2:'喝',3:'玩' }" label="愛好" name="hobby"></s:checkboxlist>
          		<s:textarea label="備註" name="remark"></s:textarea>
          	</s:form>

頁面效果: