您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關struts2標簽的作用有哪些,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
先看一下Struts2標簽的分類吧。然后分類總結一下即可。
由于控制標簽用的比較多,所以放在了前邊。好首先看一下控制標簽吧。
一、控制標簽,JSTL大家應該都使用過,其實Struts2的控制標簽和那個特別像的,主要是對EL表達式滿足不了的進行補充使用。這里簡單看一下吧:
1. if……elseif……else,用來控制選擇輸出的標簽;
<span ><html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>s:if標簽測試</title> </head> <body> <!-- 在Stack Context中定義一個age屬性,其值為29 --> <s:set name="age" value="29"/> <!-- 如果Stack Context中的age屬性大于60 --> <s:if test="#age>60"> 老年人 </s:if> <!-- 如果Stack Context中的age屬性大于35 --> <s:elseif test="#age>35"> 中年人 </s:elseif> <!-- 如果Stack Context中的age屬性大于15 --> <s:elseif test="#age>15"> 青年人 </s:elseif> <s:else> 少年 </s:else> </body> </html> </span>
2.append:用于將多個集合拼接成一個新的集合;
<span ><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"> <!-- 使用iterator迭代newList集合 --> <s:iterator value="#newList" status="st"> <tr <s:if test="#st.odd"> </s:if>> <td><s:property value="key"/></td> <td><s:property value="value"/></td> </tr> </s:iterator> </table> </body> </html> </span>
3.generator:是一個字符串解析器,用于將一個字符串解析成一個集合;
<span ><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=","> <!-- 沒有指定迭代哪個集合,直接迭代ValueStack頂端的集合 --> <s:iterator status="st"> <tr <s:if test="#st.odd"> </s:if>> <td><s:property/></td> </tr> </s:iterator> </s:generator> </table> </body> </html></span>
4.iterator:是一個迭代器,用于將集合迭代輸出,這個比較使用哈,前邊都有,不再舉例;
5.merge:也是用于將多個集合拼接成一個新的集合,但是與append不同。append是將集合依次排列進行拼接,merge是第一個集合的第一個,第二個集合的第一個……第一個集合的第二個,第二個集合的第二個……;
<span ><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"></s:if>> <td><s:property value="key"/></td> <td><s:property value="value"/></td> </tr> </s:iterator> </table> </body> </html></span>
6.sort:這個標簽用于將集合進行排序;
<span ><html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>使用s:sort對集合元素進行排序</title> </head> <body> <!-- 定義一個Comparator實例 --> <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"> <!-- 迭代page范圍內的sortedList屬性 --> <s:iterator status="st" value="#attr.sortedList"> <tr <s:if test="#st.odd"> </s:if>> <td><s:property/></td> </tr> </s:iterator> </table> </body> </html></span>
<span >public class MyComparator implements Comparator { //決定兩個元素大小的方法 public int compare(Object element1, Object element2) { //根據元素字符串長度來決定大小 return element1.toString().length() - element2.toString().length(); } }</span>
7.subset:這個標簽用于截取集合的部分元素,形成新的子集合。
<span ><html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>使用s:subset標簽截取集合元素</title> </head> <body> <!-- 定義一個Decider Bean --> <s:bean var="mydecider" name="org.ljh.app.util.MyDecider"/> <!-- 使用自定義的Decider實例來截取目標集合,生成子集 指定var屬性,將生成的Itertor放入pageScope中 --> <s:subset source="{<span >'Java'</span></span><pre name="code" class="html"><span > ,'C#' ,'C++' ,'Ajax' ,'XML'</span></pre><span >}" decider="#mydecider"var="newList"/>直接輸出page范圍的newList屬性:<br/>${pageScope.newList}<table border="1" width="240"><!-- 迭代page范圍內的newList屬性 --><s:iterator status="st" value="#attr.newList"><tr <s:if test="#st.odd"></s:if>><td><s:property/></td></tr></s:iterator></table></body></html></span>
<span >//用戶自定義的Decider類,實現了SubsetIteratorFilter.Decider接口 public class MyDecider implements SubsetIteratorFilter.Decider { //實現Decider接口必須實現的decide方法, //該方法決定集合中的元素是否被選入子集 public boolean decide(Object element) throws Exception { String str = (String)element; //如果集合元素(字符串)中包含Java EE子串,即可被選入子集 return str.indexOf("Java") > 0; } }</span>
二、數據標簽,自我感覺數據標簽用的不是很多:
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里邊的各種標簽,這里不再進行贅述
四、非標單標簽,主要用于生成一些非表單的可視化元素,例如tab頁面,輸出HTML頁面的樹形結構等,當然也用來顯示Action里封裝的信息。簡單介紹一下:
簡單看一個componet標簽:
<span ><html> <head> <title>使用s:component標簽</title> </head> <body> <h4>使用s:component標簽</h4> 使用默認主題(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標簽的作用有哪些有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。