因爲控制標籤用的比較多,因此放在了前邊。好首先看一下控制標籤吧。html
一,控制標籤,JSTL你們應該都使用過,其實Struts2的控制標籤和那個特別像的,主要是對EL表達式知足不了的進行補充使用。這裏簡單看一下吧:java
1, if……elseif……else,用來控制選擇輸出的標籤;cookie
- <span style="font-size:18px;"><html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <title>s:if標籤測試</title>
- </head>
- <body>
- <s:set name="age" value="29"/>
- <s:if test="#age>60">
- 老年人
- </s:if>
- <s:elseif test="#age>35">
- 中年人
- </s:elseif>
- <s:elseif test="#age>15">
- 青年人
- </s:elseif>
- <s:else>
- 少年
- </s:else>
- </body>
- </html></span>
2,append:用於將多個集合拼接成一個新的集合;session
- <span style="font-size:18px;"><html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <title>使用s:append標籤拼接集合和Map</title>
- </head>
- <body>
- <!-- 使用append將List和Map集合拼接在一塊兒
- 新集合其實是Map集合,其名字爲newList -->
- <s:append var="newList">
- <s:param value="#{'Java':'ljh',
- 'C#':'lsz'}" />
- <s:param value="#{'0629',
- '0404'}" />
- </s:append>
- <table border="1" width="280">
- <s:iterator value="#newList" status="st">
- <tr <s:if test="#st.odd">
- style="background-color:#bbbbbb"</s:if>>
- <td><s:property value="key"/></td>
- <td><s:property value="value"/></td>
- </tr>
- </s:iterator>
- </table>
- </body>
- </html>
- </span>
3,generator:是一個字符串解析器,用於將一個字符串解析成一個集合;app
- <span style="font-size:18px;"><html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <title>使用s:generator生成集合</title>
- </head>
- <body>
- <table border="1" width="240">
- <!-- 使用generator標籤將指定字符串解析成Iterator集合
- 在generator標籤內,獲得的List集合位於ValueStack頂端 -->
- <s:generator val="'Java
- ,C#,
- C++'" separator=",">
- <s:iterator status="st">
- <tr <s:if test="#st.odd">
- style="background-color:#bbbbbb"</s:if>>
- <td><s:property/></td>
- </tr>
- </s:iterator>
- </s:generator>
- </table>
- </body>
- </html></span>
4,iterator:是一個迭代器,用於將集合迭代輸出,這個比較使用哈,前邊都有,再也不舉例;框架
5,merge:也是用於將多個集合拼接成一個新的集合,可是與append不一樣。append是將集合依次排列進行拼接,merge是第一個集合的第一個,第二個集合的第一個……第一個集合的第二個,第二個集合的第二個……;jsp
- <span style="font-size:18px;"><html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <title>使用s:merge標籤迭代Map</title>
- </head>
- <body>
- <s:merge id="newList">
- <s:param value="#{'Java':'ljh',
- 'C#':'lsz'}" />
- <s:param value="#{'0629',
- '0404'}" />
- </s:merge>
-
- <table border="1" width="320">
- <s:iterator value="#newList" status="st">
- <tr <s:if test="#st.odd">style="background-color:#bbbbbb"</s:if>>
- <td><s:property value="key"/></td>
- <td><s:property value="value"/></td>
- </tr>
- </s:iterator>
- </table>
- </body>
- </html></span>
6,sort:這個標籤用於將集合進行排序;ide
- <span style="font-size:18px;"><html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <title>使用s:sort對集合元素進行排序</title>
- </head>
- <body>
- <s:bean var="mycomparator" name="org.ljh.app.util.MyComparator"/>
- <s:sort source="{'Java'
- ,'C#'
- ,'C++'
- ,'Ajax'
- ,'XML'}"
- comparator="#mycomparator"
- var="sortedList"/>
- 輸出page範圍的sortedList屬性:<br/>
- ${pageScope.sortedList}
- <table border="1" width="300">
- <s:iterator status="st" value="#attr.sortedList">
- <tr <s:if test="#st.odd">
- style="background-color:#bbbbbb"</s:if>>
- <td><s:property/></td>
- </tr>
- </s:iterator>
- </table>
- </body>
- </html></span>
- <span style="font-size:18px;">public class MyComparator implements Comparator
- {
-
- public int compare(Object element1, Object element2)
- {
-
- return element1.toString().length()
- - element2.toString().length();
- }
- }</span>
7,subset:這個標籤用於截取集合的部分元素,造成新的子集合。測試
- <span style="font-size:18px;"><html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <title>使用s:subset標籤截取集合元素</title>
- </head>
- <body>
- <s:bean var="mydecider" name="org.ljh.app.util.MyDecider"/>
- <!-- 使用自定義的Decider實例來截取目標集合,生成子集
- 指定var屬性,將生成的Itertor放入pageScope中 -->
- <s:subset source="{<span style="font-family: SimSun; ">'Java'</span></span><pre name="code" class="html"><span style="font-size:18px;"> ,'C#'
- ,'C++'
- ,'Ajax'
- ,'XML'</span></pre><span style="font-size:18px;">}" decider="#mydecider"var="newList"/>直接輸出page範圍的newList屬性:<br/>${pageScope.newList}<table border="1" width="240">
- <span style="font-size:18px;">
- public class MyDecider
- implements SubsetIteratorFilter.Decider
- {
-
-
- public boolean decide(Object element) throws Exception
- {
- String str = (String)element;
-
- return str.indexOf("Java") > 0;
- }
- }</span>
二,數據標籤,自我感受數據標籤用的不是不少:ui
action標籤,能夠容許在jsp頁面中直接調用Action,在調用Action時候,能夠指定須要被調用的Action的name和namespace.
若是指定了executeResult參數的屬性值爲true,該標籤會把Action的處理結果(視圖資源)包含到本頁面中.
使用action標籤指定屬性有:
id: 可選屬性,做爲該Action的引用ID
name:必選屬性,指定調用Action
namespace:可選屬性,指定該標籤調用Action所屬namespace
executeResult:可選屬性,指定是否將Action的處理結果包含到本頁面中.默認值爲false,不包含.
<s:actionname="actionTag!default" executeResult="true"namespace="/generic/dataTag">
<paramname="username" value=" "/>給action屬性複製
<paramname="email" value=" "/>
</s:action>
bean 實例化一個javabean 使用Param傳入屬性 (get/set)
name 實例化的javabean的實現類
var可選 指定則實例放入棧的上下文 容許用var直接使用
注意:bean標籤內建立javabean實例位於棧頂,bean結束移除值棧,除非指定var則經過上下文訪問
date格式化輸出日期,指定日期與當天日期的時間差
formart 指定格式格式日期 注意:不欲nice同時指定,若是同時指定。則忽略formart
nice 是否指定日期與當前日期差值
name必填 格式化的日期值
var 對象放入值棧,在date結束能夠經過該屬性的值引用
<constanname="sruts.custom.i18n.resources"value="ApplicationResources" />
<s:datename="#date" formart="yyyy年MM月dd日"/>
debug標籤:
用於輔助調試.在頁面上生成超連接,能夠查看值棧,和StackContext中全部信息
id 鈣元素的一個引用id
include:講一個jsp或者servlet包含到當前頁面
value 包含的JSP或Servlet。
能夠指定多個param子標籤傳參
param標籤:爲其它標籤提供參數
name設置的參數的名字 (set) value設置的參數的值
用法①<paramname="color">
②<paramname="color" value=" 'color' "/>
push:將某個值放到值棧的棧頂
value必填:指定放入值棧的棧值!可是隻在push標籤內,一旦超出,剛剛放入的對象當即被移除
用法:
<s:pushvalue="#session.user">
<s:propertyvalue="username">
<s:propertyvalue="sex">
<s:propertyvalue="emai">
</s:push>
set:用於將某個只放入指定範圍內
定義一個新變量。將已有值放入新變量。並放入指定範圍
value 指定一個表達式,計算的結果賦變量,若是沒有指定value屬性,默認將棧頂對象賦給變量。
var 指定該屬性,改值放入到值棧中
scope指定新變量防止的範圍,可選application,session request page action(默認) 若是指定爲action放入request並放入action值棧
name變量名字
i18n text標籤 支持國際化信息
i18n將資源包放入值棧 name資源屬性名字 指定資源包的基名
text從資源包中獲取信息 title 獲取鍵爲title的消息
經過i18n放入的資源包只能在標籤體內訪問
text能夠單獨使用。首先查找資源包的基名與調用action類名相同的資源包,意味着,能夠在action類所在的包中建立與Action類名相同的的資源文件,能夠嵌套param指定消息文本的參數,順序對應參數索引順序
<s:i18nname="AppliactionResources">
<s:textname="title"/> name資源屬性名字 id指定屬性,文本內容不會輸出,而是保存在值棧中,在text結束後,能夠經過屬性的值來引用
</s:i18n>
public class TextTagAction extends ActionSupport{} 《topic-21》
url標籤用於建立URL地址,定義param附加請求參數
action value 指定生成URL的Action和URL。前一個會附加.action。若是兩個都沒有則以當前地址爲地址值
achor 可選 指定url的錨點
encode 可選 對指定參數進行編碼 不支持cookie改寫url支持session
escapeamp 是否將&轉義爲&
var 將連接值放入到值棧
includeContext是否將當前上下文包含在URL地址
includeParams是否包含請求參數,改屬性值只能爲none,getall
method 指定使用action的方法
namespace指定action所屬的命名空間
portletmode指定portle模式
scheme指定url使用的協議
property標籤,用於輸出值棧中的對象的屬性值
value指定要輸出的對象屬性 沒有則輸出棧頂
default 可選 value爲null輸出改值
escape 是否專注輸出內容中的html
三,表單標籤,這個就是form下的Struts2提供的標籤,供界面顯示用的,其實用的更少,通常狀況下,咱們都會拿easy-ui,dwz等一些專門作界面的框架進行替換。其實說簡單一點就像HTML裏邊的各類標籤,這裏再也不進行贅述,用的時候咱們上網上查便可,這裏提供網上的一些,你們能夠看下:
Struts2經常使用表單標籤
四,非標單標籤,主要用於生成一些非表單的可視化元素,例如tab頁面,輸出HTML頁面的樹形結構等,固然也用來顯示Action裏封裝的信息。簡單介紹一下:
標籤名 |
含義 |
actionerror |
若是Action實例的getActionErrors()方法返回不爲null,則該標籤負責輸出該方法的返回的信息。 |
actionmessage |
和上邊同樣,用於返回GetActionMessage()的信息 |
component |
用於生成一個自定義組件。能夠利用寫好模版,主題等 |
fielderror |
若是Action實例存在表單域的類型轉換錯誤,校驗錯誤,該標籤負責輸出這些錯誤信息。 |
簡單看一個componet標籤:
- <span style="font-size:18px;"><html>
- <head>
- <title>使用s:component標籤</title>
- </head>
- <body>
- <h3>使用s:component標籤</h3>
- 使用默認主題(xhtml),默認主題目錄(template)<br/>
- 使用mytemplate.jsp做爲視圖組件
- <s:component template="mytemplate.jsp">
- <s:param name="list" value="{'Java'
- ,'C#'
- ,C++'}"/>
- </s:component>
- <hr/>
- 使用自定義主題,自定義主題目錄<br/>
- 使用myAnotherTemplate.jsp做爲視圖組件
- <s:component
- templateDir="myTemplateDir"
- theme="myTheme"
- template="myAnotherTemplate.jsp">
- <s:param name="list" value="
- {'Java'
- ,'C#'
- ,C++'}"/>
- </s:component>
- </body>
- </html>
- </span>
這是Struts2標籤的簡單總結,咱們能夠在使用中不斷熟練,可是前提咱們得知道這些東西。即所謂的那句話,不怕不知道,就怕不知道。