Struts2常用的標籤的用法
阿新 • • 發佈:2019-02-07
property標籤:<br>
1.取值:<s:property value="username"/><br>
<!--
property的value對應了一個object,struts2會自動的轉換成一個ognl表示式,然後取值.
如果需要把字串當成值,就應該用如下形式。
-->
2.取值為字串:<s:property value="'passwd'"/>||<s:property value="/"passwd/""/><br>
<!--
property是從值棧中取出對應屬性的值,當一個給定的屬性不存在值棧時,可以用default來
設定該屬性的值。然而這個值不會被放到值棧中。
-->
3.設定預設值:<s:property value="admin" default="管理員"/><br>
<!--
當value的值是一個html標籤時,struts2通過escape控制是將其解析成html還是字串,
預設為true,將其轉換為字串。
-->
4.設定html:<s:property value="'<hr/>'" escape="true"/><br>
<s:property value="'<hr/>'" escape="false"/><br>
<hr>
set標籤:<br>
<!--
set:通過set在不設定範圍的情況下,這個屬性與其對應的值會被放在request和actionContext中,
然而在debug標籤下去找這個值的時候,在request裡看不到相關的設定值。原因是在形成debug標籤時,這個值
還沒有放在request裡面,但實際上這個值已經放到request裡了。
-->
1.設定adminName(預設為request和actionContext):<s:set var="adminName" value="username"/>||<s:set id="1" name="adminPass" value="passwd"/><br>
2.從request裡取值:<s:property value="#request.adminName"/><br>
<s:property value="#request.adminPass"/><br>
3.從actionContext取值:<s:property value="#adminName"/><br>
<s:property value="#adminPass"/><br>
<!--
scope表示設定的值放在什麼範圍,其取值有如下幾種:application,session,session,page,action。
-->
4.設定範圍:<s:set name="myPasswd" value="passwd" scope="page"></s:set><br>
5.從相應的範圍取值:<%=pageContext.getAttribute("myPasswd") %><br/>
6.設定var,範圍為actionContext:<s:set name="money" value="'wo hen yu men'" var="a" ></s:set><br>
7.通過變數取值:<s:property value="#a"/><br>
<hr>
<!-- bean標籤如果沒有用var,則只能在bean標籤內部使用相關屬性,出了bean標籤就用不了了。
bean將會值棧中存在,而bean結束後,就移除值棧。如果用了var可以在actionContext中取得相關的值。
有一點需要說明:在bean中定義成員變數時需要前2個字母為小寫,否則會出現NoSuchPropertyException.
-->
bean標籤:<br>
<!-- bean標籤是new一個類的物件,通過傳入的引數給相關屬性賦值 ,其var是將new出來的物件放入actionContext
如果沒有var,new出來的物件將短暫的放在值棧中,bean標籤結束時,自動從值棧中移除,因此在其他地方也訪問不到
而放在actionContext中的內容在任何地方都能訪問到。
-->
設定stu值:<s:bean name="com.xie.struts2.tags.modal.Student" var="stu">
<s:param name="stName">wang</s:param>
<s:property value="stName"/>
</s:bean><br>
從stu中取值:<s:property value="#stu.stName"/><br>
<hr>
include包含標籤:<br>
<!-- include標籤 的value值是真正的String,用%將字串轉化成ognl表示式-->
包含靜態檔案:<s:include value="/include1.html"></s:include><br>
包含靜態檔案:<s:set var="incPage" value="'/include1.html'"></s:set>
<s:include value="%{#incPage}"></s:include><br>
<!-- 通過fielderror從值棧中讀出來值進行顯示是一種固定格式,這個並不常用
通常我們通過ognl表示式從值棧中取值,然後進行顯示。
-->
讀取fielderror:<s:fielderror theme="simple"></s:fielderror><hr>
if控制標籤if else if else:<br/>
取出age的值:<s:property value="#parameters.age"/><br>
<s:set var="age" value="#parameters.age[0]"></s:set>
<s:if test="#age<10">
He is too young.
</s:if>
<s:elseif test="#parameters.age[0]<20">
He is yeah!
</s:elseif>
<s:else>
Good!!!
</s:else>
<br><hr>
itertor遍歷集合:<br>
<!-- iterator標籤是遍歷容器的,通常我們能想到的容器如:conncetion,map,enumeration等
在遍歷map時,value的map前必須加上#
-->
遍歷值棧的集合:<s:iterator value="sl">
<s:property value="stName"/>
</s:iterator><br>
遍歷指定集合:<s:iterator value="{1,2,3}">
值:<s:property/><br/>
</s:iterator><br>
自定義變數:<s:iterator value="{'my name is xie','I want to go home','Java Is good'}" var="x">
<s:property value="#x.toUpperCase()"/>
</s:iterator><br>
使用status:<br> <s:iterator value="{'aaa','bbb','ccc','ddd','eee','fff'}" status="status">
<s:property/>
遍歷過的元素個數:<s:property value="#status.count"/>
遍歷過的元素索引:<s:property value="#status.index"/>
當前是偶數:<s:property value="#status.even"/>
當前是奇數:<s:property value="#status.odd"/>
是第一個元素:<s:property value="#status.first"/>
是最後一個元素:<s:property value="#status.last"/><br/>
</s:iterator><br>
訪問map:<br>
<s:iterator value="#{1:'aa',2:'bb',3:'cc',4:'dd',5:'ee'}">
<s:property value="key"/>|||||||<s:property value="value"/><br/>
</s:iterator><br>
<s:iterator value="#{1:'aa',2:'bb',3:'cc',4:'dd',5:'ee'}" var="map">
<s:property value="#map.key"/>|||||||<s:property value="#map.value"/><br/>
</s:iterator><br> <hr>
subset標籤:<br/>
1. 基礎訪問:<s:subset source="sl">
<s:iterator>
<s:property value="stName"/>
</s:iterator>
</s:subset><br>
<!-- 從低一個元素開始,訪問count個元素 -->
2.用count:<s:subset source="sl" count="2">
<s:iterator>
<s:property value="stName"/>
</s:iterator>
</s:subset><br>
3.用start:<s:subset source="sl" count="2" start="1">
<s:iterator>
<s:property value="stName"/>
</s:iterator>
</s:subset><br>
4.使用var:<s:subset var="mysl" source="sl" >
<%
Iterator<Student> i = (Iterator<Student>) pageContext.getAttribute("mysl");
while(i.hasNext()) {
%>
<%=i.next().getStName() %>
<% } %>
1.取值:<s:property value="username"/><br>
<!--
property的value對應了一個object,struts2會自動的轉換成一個ognl表示式,然後取值.
如果需要把字串當成值,就應該用如下形式。
-->
2.取值為字串:<s:property value="'passwd'"/>||<s:property value="/"passwd/""/><br>
<!--
property是從值棧中取出對應屬性的值,當一個給定的屬性不存在值棧時,可以用default來
設定該屬性的值。然而這個值不會被放到值棧中。
-->
3.設定預設值:<s:property value="admin" default="管理員"/><br>
<!--
當value的值是一個html標籤時,struts2通過escape控制是將其解析成html還是字串,
預設為true,將其轉換為字串。
-->
4.設定html:<s:property value="'<hr/>'" escape="true"/><br>
<s:property value="'<hr/>'" escape="false"/><br>
<hr>
set標籤:<br>
<!--
set:通過set在不設定範圍的情況下,這個屬性與其對應的值會被放在request和actionContext中,
然而在debug標籤下去找這個值的時候,在request裡看不到相關的設定值。原因是在形成debug標籤時,這個值
還沒有放在request裡面,但實際上這個值已經放到request裡了。
-->
1.設定adminName(預設為request和actionContext):<s:set var="adminName" value="username"/>||<s:set id="1" name="adminPass" value="passwd"/><br>
2.從request裡取值:<s:property value="#request.adminName"/><br>
<s:property value="#request.adminPass"/><br>
3.從actionContext取值:<s:property value="#adminName"/><br>
<s:property value="#adminPass"/><br>
<!--
scope表示設定的值放在什麼範圍,其取值有如下幾種:application,session,session,page,action。
-->
4.設定範圍:<s:set name="myPasswd" value="passwd" scope="page"></s:set><br>
5.從相應的範圍取值:<%=pageContext.getAttribute("myPasswd") %><br/>
6.設定var,範圍為actionContext:<s:set name="money" value="'wo hen yu men'" var="a" ></s:set><br>
7.通過變數取值:<s:property value="#a"/><br>
<hr>
<!-- bean標籤如果沒有用var,則只能在bean標籤內部使用相關屬性,出了bean標籤就用不了了。
bean將會值棧中存在,而bean結束後,就移除值棧。如果用了var可以在actionContext中取得相關的值。
有一點需要說明:在bean中定義成員變數時需要前2個字母為小寫,否則會出現NoSuchPropertyException.
-->
bean標籤:<br>
<!-- bean標籤是new一個類的物件,通過傳入的引數給相關屬性賦值 ,其var是將new出來的物件放入actionContext
如果沒有var,new出來的物件將短暫的放在值棧中,bean標籤結束時,自動從值棧中移除,因此在其他地方也訪問不到
而放在actionContext中的內容在任何地方都能訪問到。
-->
設定stu值:<s:bean name="com.xie.struts2.tags.modal.Student" var="stu">
<s:param name="stName">wang</s:param>
<s:property value="stName"/>
</s:bean><br>
從stu中取值:<s:property value="#stu.stName"/><br>
<hr>
include包含標籤:<br>
<!-- include標籤 的value值是真正的String,用%將字串轉化成ognl表示式-->
包含靜態檔案:<s:include value="/include1.html"></s:include><br>
包含靜態檔案:<s:set var="incPage" value="'/include1.html'"></s:set>
<s:include value="%{#incPage}"></s:include><br>
<!-- 通過fielderror從值棧中讀出來值進行顯示是一種固定格式,這個並不常用
通常我們通過ognl表示式從值棧中取值,然後進行顯示。
-->
讀取fielderror:<s:fielderror theme="simple"></s:fielderror><hr>
if控制標籤if else if else:<br/>
取出age的值:<s:property value="#parameters.age"/><br>
<s:set var="age" value="#parameters.age[0]"></s:set>
<s:if test="#age<10">
He is too young.
</s:if>
<s:elseif test="#parameters.age[0]<20">
He is yeah!
</s:elseif>
<s:else>
Good!!!
</s:else>
<br><hr>
itertor遍歷集合:<br>
<!-- iterator標籤是遍歷容器的,通常我們能想到的容器如:conncetion,map,enumeration等
在遍歷map時,value的map前必須加上#
-->
遍歷值棧的集合:<s:iterator value="sl">
<s:property value="stName"/>
</s:iterator><br>
遍歷指定集合:<s:iterator value="{1,2,3}">
值:<s:property/><br/>
</s:iterator><br>
自定義變數:<s:iterator value="{'my name is xie','I want to go home','Java Is good'}" var="x">
<s:property value="#x.toUpperCase()"/>
</s:iterator><br>
使用status:<br> <s:iterator value="{'aaa','bbb','ccc','ddd','eee','fff'}" status="status">
<s:property/>
遍歷過的元素個數:<s:property value="#status.count"/>
遍歷過的元素索引:<s:property value="#status.index"/>
當前是偶數:<s:property value="#status.even"/>
當前是奇數:<s:property value="#status.odd"/>
是第一個元素:<s:property value="#status.first"/>
是最後一個元素:<s:property value="#status.last"/><br/>
</s:iterator><br>
訪問map:<br>
<s:iterator value="#{1:'aa',2:'bb',3:'cc',4:'dd',5:'ee'}">
<s:property value="key"/>|||||||<s:property value="value"/><br/>
</s:iterator><br>
<s:iterator value="#{1:'aa',2:'bb',3:'cc',4:'dd',5:'ee'}" var="map">
<s:property value="#map.key"/>|||||||<s:property value="#map.value"/><br/>
</s:iterator><br> <hr>
subset標籤:<br/>
1. 基礎訪問:<s:subset source="sl">
<s:iterator>
<s:property value="stName"/>
</s:iterator>
</s:subset><br>
<!-- 從低一個元素開始,訪問count個元素 -->
2.用count:<s:subset source="sl" count="2">
<s:iterator>
<s:property value="stName"/>
</s:iterator>
</s:subset><br>
3.用start:<s:subset source="sl" count="2" start="1">
<s:iterator>
<s:property value="stName"/>
</s:iterator>
</s:subset><br>
4.使用var:<s:subset var="mysl" source="sl" >
<%
Iterator<Student> i = (Iterator<Student>) pageContext.getAttribute("mysl");
while(i.hasNext()) {
%>
<%=i.next().getStName() %>
<% } %>