要想使用 struts2 標籤,必須在 jsp 頁面中引入標記
<%@ taglib prefix="s" uri="/struts-tags"%>
Struts2 的標籤與 struts1 有很大的不同
Struts1 將標誌庫按功能分成 HTML 、 Tiles 、 Logic 和 Bean 等幾部分 , 且不支持嵌入語言( EL )。
Struts2 把所有的標籤都歸於 URI 爲 “/struts-tags” 命名空間下,從功能上將其分爲兩大類:通用標誌和 UI 標誌。
官網 taglib 的 URL 爲 http://struts.apache.org/2.x/docs/tag-reference.html
通用標籤(控制類)
· If 、 elseif 、 else
<s:if test= "exp1" >
<div> exp1 返回 true ,則顯示,否則不顯示 </div>
</s:if>
<s:elseif test= "exp2" >
<div> 在 exp1 返回 false 前提下, exp2 返回 true ,則顯示,否則不顯示 </div>
</s:elseif>
<s:else>
<div> exp2 和 exp1 都返回 false 時顯示 </div>
</s:else>
名稱 |
必需 |
默認 |
類型 |
描述 |
備註 |
test |
是 |
|
Boolean |
決定標誌裏內容是否顯示的表達式 |
else 標誌沒有這個參數 |
id |
否 |
|
String |
標識 |
或者是var |
· append 、 generator 、 iterator 、 merge 、 subset
Append :往 iterator 迭代器中添加項
<s:append var= "myAppendIterator" >
<s:param value= "%{myList1}" />
<s:param value= "%{myList2}" />
<s:param value= "%{myList3}" />
</s:append>
<s:iterator value= "%{#myAppendIterator}" >
<s:property />
</s:iterator>
generator : iterator 迭代器的生成器
例 1 :生成 iterator 並打印 iterator 中的值
<s:generator val= "%{'aaa,bbb,ccc,ddd,eee'}" >
<s:iterator>
<s:property /><br/>
</s:iterator>
</s:generator>
例 2 :生成一個帶記數的 iterator ,超出記數的部分將被忽略,如“ ddd,eee ”
<s:generator val= "%{'aaa,bbb,ccc,ddd,eee'}" count= "3" >
<s:iterator>
<s:property /><br/>
</s:iterator>
</s:generator>
例 3 :生成帶標識的 iterator , 生成的對象放在 pageContext 中,可通過 標識 來訪問
<s:generator val= "%{'aaa,bbb,ccc,ddd,eee'}" count= "4" separator= "," var= "myAtt" />
<%
Iterator i = (Iterator) pageContext.getAttribute("myAtt" );
while(i.hasNext()) {
String s = (String) i.next(); %>
<%=s%> <br/>
<% }
%>
例 4 : 生成 iterator ,使用 converter 屬性,將每一個對象添加了一個 "converter-" 前綴。
<s:generator val= "%{'aaa,bbb,ccc,ddd,eee'}" converter= "%{myConverter}" >
<s:iterator>
<s:property /><br/>
</s:iterator>
</s:generator>
public class GeneratorTagAction extends ActionSupport {
....
public Converter getMyConverter() {
return new Converter() {
public Object convert(String value) throws Exception {
return "converter-" +value;
}
};
}
...
}
名稱 |
必需 |
默認 |
類型 |
描述 |
備註 |
converter |
否 |
|
org.apache.struts2.util.IteratorGenerator.Converter |
額外操作 |
|
count |
否 |
|
Integer |
數量 |
|
id |
否 |
|
String |
標識 |
|
separator |
是 |
|
String |
兩值的分割 |
|
val |
是 |
|
String |
值 |
|
Iterator: 迭代器
<s:bean name= "org.apache.struts2.example.IteratorExample" var= "it" >
<s:param name= "day" value= "'foo'" />
<s:param name= "day" value= "'bar'" />
</s:bean>
<p/>
<table border= "0" cellspacing= "0" cellpadding= "1" >
<tr>
<th> Days of the week</th>
</tr>
<p/>
<s:iterator value= "#it.days" status= "rowstatus" >
<tr>
<s:if test= "#rowstatus.odd == true" >
<td style= "background: grey" ><s:property/></td>
</s:if>
<s:else>
<td><s:property/></td>
</s:else>
</tr>
</s:iterator>
</table>
名稱 |
必需 |
默認 |
類型 |
描述 |
備註 |
id |
否 |
|
String |
標識 |
|
status |
否 |
false |
Boolean |
決定是否使用子項的標識變量 |
|
value |
否 |
|
String |
引用的變量 |
|
Merge :和 apand 功能類似
<s:merge var= "myMergedIterator1" >
<s:param value= "%{myList1}" />
<s:param value= "%{myList2}" />
<s:param value= "%{myList3}" />
</s:merge>
<s:iterator value= "%{#myMergedIterator1}" >
<s:property />
</s:iterator>
Sort: iterator 中的項排序
用法 1:
<s:sort comparator= "myComparator" source= "myList" >
<s:iterator>
<!-- do something with each sorted elements -->
<s:property value= "..." />
</s:iterator>
</s:sort>
用法 2:
<s:sort var= "mySortedList" comparator= "myComparator" source= "myList" />
名稱 |
必需 |
默認 |
類型 |
描述 |
備註 |
id |
否 |
|
String |
標識 |
|
是 |
|
ava.util.Comparator |
排序用的比較器 |
|
|
Source |
否 |
|
String |
排序對象標識 |
|
Subset : iterator 的子項
<!-- s: List basic -->
<s:subset source= "myList" >
<s:iterator>
<s:property />
</s:iterator>
</s:subset>
<!-- B: List with count -->
<s:subset source= "myList" count= "3" >
<s:iterator>
<s:property />
</s:iterator>
</s:subset>
<!-- C: List with start -->
<s:subset source= "myList" count= "13" start= "3" >
<s:iterator>
<s:property />
</s:iterator>
</s:subset>
<!-- D: List with var -->
<s:subset var= "mySubset" source= "myList" count= "13" start= "3" />
<%
Iterator i = (Iterator) pageContext.getAttribute("mySubset" );
while(i.hasNext()) {
%>
<%=i.next() %>
<% } %>
<!-- D: List with Decider -->
<s:subset source= "myList" decider= "myDecider" >
<s:iterator>
<s:property />
</s:iterator>
</s:subset>
名稱 |
必需 |
默認 |
類型 |
描述 |
備註 |
id |
否 |
|
String |
標識 |
|
count |
否 |
|
Integer |
子集的子項的個數 |
|
Source |
否 |
|
String |
iterator 對象標識 |
|
start |
否 |
|
Integer |
從該個開始取子集 |
|
decider |
否 |
|
org.apache.struts2.util.SubsetIteratorFilter.Decider |
用作取 iterator 子集 的操作器 |
|
未完待繼
通用標籤(數據類)