struts2中的s標籤解析,s標籤解析,struts2

那就從簡單的標籤提及吧!1.x中經常使用的標籤只有4中html、bean、logic、tileshtml

 

而struts2.0裏的標籤卻沒有分類,只用在jsp頭文件加上   java

 

 

<%@ taglib prefix="s" uri="/struts-tags" %>   就能使用struts2.0的標籤庫   node

 

 

下面就介紹每一個標籤的具體應用實例說明:按字母排列web

 

 

A:   ajax

 

1.   數據庫

2. <s:a href=""></s:a>-----超連接,相似於html裏的<a></a>   數組

3. <s:action name=""></s:action>-----執行一個view裏面的一個action   瀏覽器

4. <s:actionerror/>-----若是action的errors有值那麼顯示出來   安全

5. <s:actionmessage/>-----若是action的message有值那麼顯示出來   cookie

6. <s:append></s:append>-----添加一個值到list,相似於list.add();   

7. <s:autocompleter></s:autocompleter>-----自動完成<s:combobox>標籤的內容,這個是ajax   

 

 

B:   

 

 

1. <s:bean name=""></s:bean>-----相似於struts1.x中的,JavaBean的值   

 

 

C:   

 

 

1. <s:checkbox></s:checkbox>-----複選框   

2. <s:checkboxlist list=""></s:checkboxlist>-----多選框   

3. <s:combobox list=""></s:combobox>-----下拉框   

4. <s:component></s:component>-----圖像符號   

 

 

 

 

 

 

D:   

 

 

1. <s:date/>-----獲取日期格式   

2. <s:datetimepicker></s:datetimepicker>-----日期輸入框   

3. <s:debug></s:debug>-----顯示錯誤信息   

4. <s:div></s:div>-----表示一個塊,相似於html的<div></div>   

5. <s:doubleselect list="" doubleName="" doubleList=""></s:doubleselect>-----雙下拉框   

 

 

 

 

 

 

E:   

 

 

1. <s:if test=""></s:if>   

2. <s:elseif test=""></s:elseif>   

3. <s:else></s:else>-----這3個標籤一塊兒使用,表示條件判斷   

 

 

 

 

 

 

F:   

 

 

1. <s:fielderror></s:fielderror>-----顯示文件錯誤信息   

2. <s:file></s:file>-----文件上傳   

3. <s:form action=""></s:form>-----獲取相應form的值   

 

 

 

 

 

 

G:   

 

 

1. <s:generator separator="" val=""></s:generator>----和<s:iterator>標籤一塊兒使用   

 

 

 

 

 

 

H:   

 

 

1. <s:head/>-----在<head></head>裏使用,表示頭文件結束   

2. <s:hidden></s:hidden>-----隱藏值   

 

 

 

 

 

 

I:   

 

 

1. <s:i18n name=""></s:i18n>-----加載資源包到值堆棧   

2. <s:include value=""></s:include>-----包含一個輸出,servlet或jsp頁面   

3. <s:inputtransferselect list=""></s:inputtransferselect>-----獲取form的一個輸入   

4. <s:iterator></s:iterator>-----用於遍歷集合   

 

 

 

 

 

 

L:   

 

 

1. <s:label></s:label>-----只讀的標籤   

 

 

 

 

 

 

M:   

 

 

1. <s:merge></s:merge>-----合併遍歷集合出來的值   

 

 

 

 

 

 

O:   

 

 

1. <s:optgroup></s:optgroup>-----獲取標籤組   

2. <s:optiontransferselect doubleList="" list="" doubleName=""></s:optiontransferselect>-----左右選擇框   

 

 

 

 

 

 

P:   

 

 

1. <s:param></s:param>-----爲其餘標籤提供參數  

struts2的s:param標籤主要有兩個屬性name與value, 若想在value屬性中輸入直接量,則能夠這樣寫:<s:param name="some" value="%{'user'}"/>, 也能夠這樣寫:<s:paramname="some">user</s:param>。但若是直接賦值,這個值不是由Action動態生成的,而是本身指定的一個字符串,則只能用後者

 

 

 

2. <s:password></s:password>-----密碼輸入框   

3. <s:property/>-----獲得'value'的屬性   

4. <s:push value=""></s:push>-----value的值push到棧中,從而使property標籤的可以獲取value的屬性   

 

 

 

 

 

 

R:   

 

 

1.   

2. <s:radio list=""></s:radio>-----單選按鈕   

3. <s:reset></s:reset>-----重置按鈕   

 

 

 

 

 

 

S:   

 

 

1. <s:select list=""></s:select>-----單選框   

2. <s:set name=""></s:set>-----賦予變量一個特定範圍內的值   

3. <s:sort comparator=""></s:sort>-----經過屬性給list分類   

4. <s:submit></s:submit>-----提交按鈕   

5. <s:subset></s:subset>-----爲遍歷集合輸出子集   

 

 

 

 

 

 

T:   

 

 

1. <s:tabbedPanel id=""></s:tabbedPanel>-----表格框   

2. <s:table></s:table>-----表格   

3. <s:text name=""></s:text>-----I18n文本信息   

4. <s:textarea></s:textarea>-----文本域輸入框   

5. <s:textfield></s:textfield>-----文本輸入框   

6. <s:token></s:token>-----攔截器   

7. <s:tree></s:tree>-----樹   

8. <s:treenode label=""></s:treenode>-----樹的結構   

 

 

 

 

 

 

U:   

 

 

1. <s:updownselect list=""></s:updownselect>-----多選擇框   

2. <s:url></s:url>-----建立url

 

 

 

 

 

 

 

 

 

 

 

 

___________________________________________________

 

 

 

 

struts2框架的標籤庫分爲三類:

 

 

用戶標籤:生成HTML元素 

非用戶標籤:數據訪問、邏輯控制等。 

AJAX標籤:支持AJAX技術。 

用戶界面標籤又分兩類:

 

 

表單標籤:生成HTML頁面的from元素 

非表單標籤:生成頁面上的Tab、Tree等 

非界面標籤又分爲數據訪問標籤和流程控制標籤。

 

 

 

 

 

控制標籤:

 

 

if/elseif/else標籤:控制流程分支。 

iteratot標籤:對集合屬性迭代(屬性類型:List、Map、數組)。 

append標籤:將多個集合對象拼接在一塊兒,組成一個新的集合。將多個集合使用一個<iterator/>標籤完成迭代。 

generatot標籤:將指定的字符串按照規定的分隔符分解成多個子字符串。 

merge標籤:將多個集合拼接在一塊兒。 

subset標籤:獲取某個集合的子集合。 

sort標籤:多指定的集合元素進行排序。 

數據標籤:

 

 

action:直接調用一個Action,根據executeResult參數,能夠將Action的處理結果包含到頁面中。 

bean:建立一個JavaBean實例。。 

date:格式化輸出一個日期屬性。 

debug:生成一個調試連接,當單擊該連接時,能夠看到當前棧值中的內容。 

i18n:指定國際化資源文件的baseName。 

include:包含其餘的頁面資源。 

param:設置參數。 

property:輸出某個值。能夠輸出值棧、StackContext 、ActionContext中的值。 

push:將某個值放入值棧。 

set:設置一個新的變量。 

text:輸出國際化信息。 

url:生成一個URL地址。 

表單標籤:

 

 

checkbox標籤:複選框。 

checkboxlist標籤:根據一個集合屬性建立一系列的複選框。 

combobox標籤:生成一個單選文本框和一個下拉列表框的組合。 

doubleselect標籤:生成一個相互關聯的列表框,該標籤由兩個下拉選擇框組成。 

datetimepicker標籤:生成一個日期、時間下拉列表框。 

head標籤:生成HTML頁面的HEAD部分。 

file標籤:在頁面上生成一個上傳文件元素。 

hidder標籤:生成一個不看見的用戶輸入元素。 

select標籤:生成下拉列表框。 

optiontransferselect標籤:建立兩個選項以及轉移下拉列表項,該標籤生成兩個下拉列表框,同時生成相應的按鈕,這些按鈕能夠控制選項在兩個下拉列表之間移動、排序。 

radio標籤:單選框。 

optgroup標籤:生成一個下拉列表框的選擇組,下拉列表框中能夠包含多個選擇組。 

token標籤:防用戶屢次提交表單。 

textarea標籤:文本域。 

updownselct標籤:支持選項內容的上下移動。 

password表單:密碼錶單域。 

textfield標籤:單行文本輸入框。 

非表單標籤:

 

 

actionerror標籤:輸出Action中getActionErrors()方法返回的異常信息。 

actionmessage標籤:輸出Action中getActionErrors()方法返回的信息。 

component標籤:生成一個自定義的組件。 

div標籤:AJAX標籤,生成一個div片斷。 

fielderror標籤:輸出異常提示信息。 

tabbedPanel:AJAX標籤,生成HTML中的Tab頁。 

tree標籤:生成一個樹形結構。 

treenode標籤:生成樹形結構的節點。 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

____________________________________________________

Struts之LOGIC標籤庫詳解

 

 

 

 

1. logic:empty 

該標籤是用來判斷是否爲空的。若是爲空,該標籤體中嵌入的內容就會被處理。該標籤用於如下狀況: 

1)當Java對象爲null時; 

2)當String對象爲""時; 

3)當java.util.Collection對象中的isEmpty()返回true時; 

4)當java.util.Map對象中的isEmpty()返回true時。 

eg. 

 

 

該句等同於: 

if (userList.isEmpty()) { 

... 

 

 

2. logic:notEmpty 

該標籤的應用正好和logic:empty標籤相反。 

 

 

3. logic:equal 

該標籤爲等於比較符。 

eg1. 比較用戶的狀態屬性是否1,若爲1,輸出"啓用"; 

eg2. 若是上例中的value值是動態得到的,例如須要經過bean:write輸出,因struts不支持標籤嵌套,可採用EL來解決該問題。 

 

 

4. logic:notEqual 

該標籤意義與logic:equal相反,使用方法相似,略。 

 

 

5. logic:forward 

該標籤用於實現頁面導向,查找配置文件的全局forward。struts-config.xml文件中全局轉向 

eg. <logic:forward name="redirect"/> 

 

 

6. logic:greaterEqual 

爲大於等於比較符。 

eg. 當某學生的成績大於等於60時,輸出「及格」: 

<logic:greaterEqual name="student" property="scores" value="60"> 

及格 

</logic:greaterEqual> 

7. logic:greaterThan 

此爲大於比較符,使用方法同logic:greaterEqual; 

8. logic:lessEqual 

此爲小於等於比較符,使用方法同logic:greaterEqual; 

9. logic:lessThan 

此爲小於比較符,使用方法同logic:greaterEqual; 

10. logic:match 

此標籤比較對象是否相等; 

eg1. 檢查在request範圍內的name屬性是否包含"hello"串: 

<logic:match name="name" scope="request" value="hello"> 

<bean:write name="name"/>中有一個「hello」串。 

</logic:match> 

eg2. 檢查在request範圍內的name屬性是否已「hello」做爲起始字符串: 

<logic:match name="name" scope="request" value="hello" location="start"> 

<bean:write name="name"/>以「hello」做爲起始字符串。 

</logic:match> 

eg3. 

<logic:match header="user-agent" value="Windows"> 

你運行的是Windows系統 

</logic:match> 

11. logic:notMatch 

此標籤用於比較對象是否不相同,與logic:match意義相反,使用方法相似 

 

 

12. logic:messagePresent 

該標籤用於判斷ActionMessages/ActionErrors對象是否存在; 

eg. 若是存在error信息,將其所有輸出: 

<logic:messagePresent property="error"> 

<html:messages property="error" id="err" > 

<bean:write name="err"/> 

</html:messages> 

</logic:messagePresent > 

13. logic:messagesNotPresent 

該標籤用於判斷ActionMessages/ActionErrors對象是否不存在,使用方法與logic:messagePresent相似 

14. logic:present 

此標籤用於判斷request對象傳遞參數是否存在。 

eg1. user對象和它的name屬性在request中都存在時,輸出相應字符串: 

<logic:present name="user" property="name"> 

user對象和該對象的name屬性都存在 

</logic:present> 

eg2. 如有一個名字爲「hello」的JavaBean,輸出對應字符串: 

<logic:present name="hello" > 

有一個名字爲「hello」的JavaBean。 

</logic:present> 

eg3. 

<logic:present header="user-agent"> 

we got a user-agent header. 

</logic:present> 

15. logic:notPresent 

此標籤用於判斷request對象傳遞參數是否不存在,意義與了logic:present相反,使用方法相似。 

16. logic:iterator 

用於顯示列表爲collection的值(List ,ArrayList,HashMap等)。 

eg1. 逐一輸出用戶列表(empList)中用戶的姓名: 

<logic:iterate id="emp" name="empList"> 

<bean:write name="emp" property="name"/><br> 

</logic:iterate> 

eg2. 從用戶列表中輸出從1開始的兩個用戶的姓名 

<logic:iterate id="emp" name="empList" indexId="index" offset="1" length="2"> 

<bean:write name="index"/>.<bean:write name="emp" property="name"/><br> 

</logic:iterate> 

eg3. logic:iterator標籤的嵌套舉例 

<logic:iterate id="emp" indexId="index" name="empList"> 

<bean:write name="index"/>. <bean:write name="emp" property="name"/><br> 

<logic:iterate id="address" name="emp" property="addressList" length="3" offset="1"> 

<bean:write name="address"/><br> 

</logic:iterate> 

</logic:iterate> 

17. logic:redirect 

該標籤用於實現頁面轉向,可傳遞參數。 

eg. <logic:redirect href="http://www.javaeye.com"/>

 

 

 

 

 

 

logic:iterate 

logic:iterate標籤用來迭代集合,您可使用以下方式來爲這個標籤指定其要疊代的集合:

 

 

使用一個運行時表達式,這個表達式的值是一個集合。 

用name屬性引用一個JSP Bean,這個JSP Bean自己就是一個集合。 

用name屬性引用一個JSP Bean,這個JSP Bean的一個屬性是一個集合,這時能夠聯合使用property來指定這個集合。 

上面所提到的集合能夠是:

 

 

對象類型或原子類型的數組(Array)。 

java.util.Collection的實現,包括ArrayList,Vector。 

java.util.Enumeration的實現。 

java.util.Iterator的實現。 

java.util.Map的實現,包括HashMap,Hashtable和TreeMap。 

若是您疊代的集合中含有null的值,這時須要採起必定的措施,由於這時logic:iterate不會在page做用域中建立對象。通常是使用<logic:present>標籤或<logic:notPresent>標籤來判斷一下。

 

 

下面是logic:iterate疊代ArrayList的示例的對象引用關係和部分代碼:

 

 

 

 

圖示 3. logic:iterate中對象的引用關係

 

 

 

 

 

 

圖中的persons列表是在ListAction中填充的,在這裏只是簡單的加入了三個Person對象,在實際的應用中這些數據應該取自數據庫。具體的代碼以下:

 

 

public ActionForward execute(ActionMapping mapping,ActionForm. form,

    HttpServletRequest request,   HttpServletResponse response) {

 

 

ListForm. listForm. = (ListForm) form;

  

List<Person> persons = new ArrayList<Person>();

  

Person person1 = new Person();

person1.setId("00001");

person1.setName("趙辰");

  

Person person2 = new Person();

person2.setId("00002");

person2.setName("李爲芳");

  

Person person3 = new Person();

person3.setId("00003");

person3.setName("王微");

  

persons.add(person1);

persons.add(person2);

persons.add(person3);

  

listForm.setPersons(persons);

  

return mapping.findForward("success");

}

 

 

標籤輸出的結果爲:

 

 

00001-->趙辰 

00002-->李爲芳 

00003-->王微

 

 

回頁首 

logic:present 

若是指定的值出現該標籤就會建立其標籤體內的內容。該標籤用於如下狀況:

 

 

檢查具備指定名稱的cookie是否出現。 

檢查具備指定名稱的header是否出現。 

檢查具備指定名稱的JSP Bean是否出現 或 檢查具備指定名稱的JSP Bean中的property屬性是否出現。 

檢查request中指定名稱的參數是否出現。 

檢查當前的認證用戶是否與指定的安全角色相關聯。 

檢查當前認證的主體是否具備指定的名字。 

下面的代碼示例了logic:present標籤檢查具備指定名稱User-Agent的header是否出現:

 

 

<logic:present header="User-Agent">

您的瀏覽器是<bean:header id="userAgent" name="User-Agent"/>

    <bean:write name="userAgent"/>。<br/>

</logic:present>

 

 

logic:notPresent標籤的應用正好和logic:present標籤相反。

 

 

回頁首 

logic:messagesPresent 

logic:messagesPresent標籤用於如下狀況:

 

 

在request做用域中存在一個ActionMessages對象,標籤的property屬性和ActionMessages中的property對應。 

在request做用域中存在一個ActionErrors對象,標籤的property屬性和ActionErrors中的property對應。 

存在一個String對象,將其轉換(構造)成ActionMessage而後在添加到ActionMessages中。 

存在一個String Array對象,將數組中的每個String轉換成一個ActionMessage,在將其添加到ActionMessages中。 

標籤的message屬性值爲true時將以Globals.MESSAGE_KEY爲key在request做用域中查找Message,其它狀況下,將name的值做爲key查找,若是name 沒有出現,默認值爲Globals.ERROR_KEY。 

 

 

下面的代碼示例了logic:messagesPresent標籤的典型用法:

 

 

<logic:messagesPresent>

<ul>

<html:messages id="message">

    <li><bean:write name="message"/></li>

</html:messages>

</ul>

</logic:messagesPresent>  

 

 

標籤logic:messagesNotPresent的應用正好和logic:messagesPresent的應用相反。

 

 

回頁首 

logic:empty 

logic:empty標籤是用來判斷是否爲空的。若是爲空,該標籤體中嵌入的內容就會被處理。該標籤用於如下狀況:

 

 

當Java對象爲null時 

當String對象爲""時 

當java.util.Collection對象中的isEmpty()返回true時 

當java.util.Map對象中的isEmpty()返回true時 

下面的代碼示例了logic:empty標籤判斷集合persons是否爲空:

 

 

<logic:empty name="listForm" property = "persons">

<div>集合persons爲空!</div>      

</logic:empty>   

 

 

logic:notEmpty標籤的應用正好和logic:empty標籤相反。

 

 

回頁首 

logic:match 

logic:match標籤用來處理子串匹配問題。

 

 

若是指定的值匹配該標籤就會建立其標籤體內的內容。該標籤用於如下狀況: 

 

 

檢查具備指定名稱的cookie是否與該標籤的value匹配。 

檢查具備指定名稱的header是否與該標籤的value匹配。 

檢查具備指定名稱的JSP Bean是否與該標籤的value匹配 或 檢查具備指定名稱的JSP Bean中的property屬性值是否與該標籤的value匹配。 

檢查request中指定名稱的參數值是否與該標籤的value匹配。 

 

 

下面的代碼示例了logic:match標籤的典型用法:

 

 

<logic:present header="User-Agent">

<logic:match header="User-Agent" value="MSIE 6.0">

    MS IE 6.0

</logic:match>

</logic:present>   

 

 

logic:notMatch標籤的應用正好和logic:match標籤相反。

 

 

回頁首 

logic:equal 

這裏要介紹的不僅是logic:equal(=)標籤,而是要介紹一類標籤,這類標籤完成比較運算,包括:

 

 

logic:equal(=) 

logic:notEqual(!=) 

logic:greaterEqual(>=) 

logic:lessEqual(<=) 

logic:graterThan(>) 

logic:lessThan(<) 

該類標籤的用法相似,咱們只介紹logic:equal標籤,其它的留給您本身去完成。

 

 

logic:equal是用來判斷是否相等的。若是相等,該標籤體中嵌入的內容就會被處理。該標籤用於如下狀況:

 

 

比較由該標籤的cookie屬性指定的cookie的值是否與該標籤的value屬性值相等。 

比較由該標籤的header屬性指定的header的值是否與該標籤的value屬性值相等。 

比較由該標籤的name屬性指定的JSP Bean是否與該標籤的value屬性值相等(property屬性不出現)或比較由該標籤的name屬性指定的JSP Bean中的property屬性值是否與該標籤的value屬性值相等。 

比較由該標籤的parameter屬性指定的參數值(request中)是否與該標籤的value屬性值相等。 

回頁首 

logic:forward 

我以爲將forward和redirect這兩個動做放到一塊兒對比着介紹更加有利於理解,基於此緣由也就將logic:forward和logic:redirect這兩個標籤也拿到這裏一塊兒介紹了。

 

 

讓咱們看看這兩個動做的區別: 

 

 

forward是在servlet內部執行,瀏覽器徹底不會感知到這個動做,原始的url也不會改變,瀏覽器從新裝載的話也只是對原始的請求進行簡單的重複。 

redirect則分紅兩個步驟:第一步是web應用程序告訴瀏覽器第二個url,而後瀏覽器向第二個url發送請求。 

 

 

redirect比forward慢,由於瀏覽器要作二次請求。還有就是要注意,在第一次的請求做用域(request做用域)內的bean對於第二次請求是不可見的。

 

 

理解了上面描述的區別也就知道了何時該選用logic:forward標籤何時該選用logic:redirect標籤了。logic:forward標籤完成PageContext.forward()或HttpServletResponse.sendRedirect(),如何選擇由控制器決定。logic:redirect標籤完成HttpServletResponse.sendRedirect()。

 

 

在使用logic:redirect標籤時咱們能夠向使用html:link同樣構造baseurl和query參數。若是您感興趣能夠參考html:link標籤。

 

 

 

 

 

 

<s:action>標籤的用法

(2012-09-27 18:04:34)

轉載▼

標籤:

&lt;saction&gt;

struts2

雜談

分類: struts2

使用action標籤,能夠容許在jsp頁面中直接調用Action,在調用Action時候,能夠指定須要被調用的Action的name和namespace.若是指定了executeResult參數的屬性值爲true,該標籤會把Action的處理結果(視圖資源)包含到本頁面中. 使用action標籤指定屬性有: 

 

 

id: 可選屬性,做爲該Action的引用ID    

   

name:必選屬性,指定調用Action    

   

namespace:可選屬性,指定該標籤調用Action所屬namespace    

   

executeResult:可選屬性,指定是否將Action的處理結果包含到本頁面中.默認值爲false,不包含.    

   

ignoreContextParam:可選參數,指定該頁面的請求參數是否須要傳入調用的Action中,默認值是false,即傳入參數. 

 

 

 <s:action name="login" executeResult="true" namespace="/"></s:action>  

 

 

傳遞參數 

 

 

   <s:action name="actinName" executeResult="true" namespace="/"> 

    <s:param name="currentPage" value="傳遞的值"></s:param> 

   </s:action> 

 

 

<s:param ></s:param>是以request方式的值的,而不是以參數傳值  

 

 

因此request.getParameter("")會獲取不到值 

 

 

經過request.getAttribute("")方式能夠獲取 

 

 

另外:使用<s:param ></s:param> value指代的是action定義的對象的名稱,而不是一個值 

 

 

和 <s:textfield>中的name是一個意思,因此要要傳遞字符串的不能把值寫value中而應該寫到 

 

 

<s:param >寫到這裏</s:param> 

例如: 

struts.xml以下配置 

<package name="reportList" namespace="/reportList" extends="default"> 

<action name="tab_*" action="xxxx" method="{1}" 

<result></result> 

</action> 

</package> 

頁面加載以下段 

<s:action na 

me="tab_gotoHeader" namespace="/reportList" executeResult="true"> 

<s:param name="headerMap" value="headerMap"></s:param> 

<s:param name="scopeId" value="1"></s:param> 

<s:param name="reportRemark" value="indicator.concept"></s:param> 

<s:param name="headerMap['lbName']" value="indicator.description"></s:param> 

</s:action> 

xxx.action中只要set,get headerMap,scopeId就能夠拿到值了

相關文章
相關標籤/搜索