Struts2提供了很多表單標籤,大部分表單標籤和HTML表單標籤之間有一一對應的關係,這裏只介紹一些比較特殊的表單標籤。對於表單標籤而言,name和value存在一個特殊的關係,每個表單元素會被映射成Action屬性。
使用Struts2標籤必須先導入標籤庫,在頁面使用如下代碼導入Struts2標籤:
<%@taglib prefix="s" uri="/struts-tags"%>
textfield標籤:
<s:textfield name="person.firstName"/>
checkboxlist標籤:
使用簡單集合來生成多個複選框
<s:checkboxlist name="a" lable="請選擇你喜歡的圖書" labelposition="top" list="{'Java編程思想','J2EE企業應用實戰'}"/>
使用簡單Map對象來生成多個複選框
<s:checkboxlist name="b" label="請選擇你喜歡的圖書" labelposition="top" list="{'Java編程思想':'2012年8月','J2EE企業應用實戰':'2012年9月'}" listKey="key" listValue="value"/>
使用創建的放有多個對象的JavaBean對象來生成多個複選框
<s:bean name="com.service.BookService" id="bs"/>
<s:checkboxlist name="b" label="請選擇你喜歡的圖書" labelposition="top" list="#bs" listKey="author" listValue="name"/>
public class BookService{
public Book[]getBooks(){
return new Book[]{
new Book("Java編程思想","李剛");
newBook("J2EE企業應用實戰","李剛");
};
}
}
public class Book{
private String name;
private String author;
public Book(String name,String author){
this.name=name;
this.author=author;
}
//getter&setter...
}
select標籤:
使用集合來生成下拉選擇框
<s:select name="a" lable="請選擇你喜歡的圖書" lableposition="top" multiple="true" list="{'Java編程思想','J2EE企業應用實戰'}" />
使用簡單Map對象來生成下拉選擇框
<s:select name="b" lable="請選擇你喜歡的圖書" lableposition="top" multiple="true" list="#{'Java編程思想':'2012年8月','J2EE企業應用實戰':'2012年9月'}" listKey="key" listValue="value"/>
屬性說明:
multiple:設置該列表框是否允許多選
listKey:指定集合中的某個元素作爲複選框的value
listValue:指定集合中的某個元素作爲複選框的標籤
使用集合裏放多個JavaBean實例來生成下拉選擇框
<s:bean name="com.service.BookService" id="bs"/>
<s:select name="b" lable="請選擇你喜歡的圖書" labelposition="top" multiple="true" list="#bs.books" listKey="author" listValue="name"/>
radio標籤:
使用集合來生成單選框
<s:radio name="a" lable="請選擇你喜歡的圖書" lableposition="top" multiple="true" list="{'Java編程思想','J2EE企業應用實戰'}" />
使用簡單Map對象來生成單選框
<s:radio name="b" lable="請選擇你喜歡的圖書" lableposition="top" multiple="true" list="#{'Java編程思想':'2012年8月','J2EE企業應用實戰':'2012年9月'}" listKey="key" listValue="value"/>
使用集合裏放多個JavaBean實例來生成單選框
<s:bean name="com.service.BookService" id="bs"/>
<s:radio name="c" lable="請選擇你喜歡的圖書" labelposition="top" multiple="true" list="#bs.books" listKey="author" listValue="name"/>
optgroup標籤:
<s:optgroup lable="請選擇你喜歡的圖書" list="#{'Java編程思想':'2012年8月'}" listKey="value" listValue="key"/>
<s:optgroup lable="請選擇你喜歡的圖書" list="#{'J2EE企業應用實戰':'2012年9月'}" listKey="value" listValue="key"/>
token標籤:
這是一個防止多次提交表單的標籤,如果需要該標籤起作用,則應該在Struts2的配置文件中啓用TokenInterceptor攔截器或TokenSessionStoreInterceptor攔截器。
token的實現原理:在表單中增加一個隱藏域,每次加載頁面時,該隱藏域的值都不同,而TokenInterceptor則攔截所有的用戶請求,如果兩次請求時該token對應隱藏域的值相同,則阻止表
單提交。
<s:token />
doubleselect標籤:
doubleselect標籤會生成一個級聯列表框,當選擇第一個下拉列表框時,第二個下拉列表框的內容會隨之而改變。
<s:doubleselect lable="請選擇你喜歡的圖書"
name="author"
list="{'李剛','David'}"
doubleList="top=='李剛'?{'Struts2權威指南','輕量級Java EE企業應用實戰'}:{'Java編程思想','23種設計模式'}"/>
使用Map對象來創建doubleselect
<s:set name="bs" value="#{'李剛':{'Struts2權威指南','輕量級Java EE企業應用實戰'},'David':{'Java編程思想','23種設計模式'}}"/>
<s:doubleselect lable="請選擇你喜歡的圖書"
size="3"
name="author"
list="#bs[top]"
doubleSize="3"
doubleName="book"/>
optiontransferselect標籤:
optiontransferselect標籤會生成兩個列表選擇框,並生成系列的按鈕來控制各選項在兩個下拉列表之間的移動、升降。當提交表單時,兩個列表選擇框對應的請求參數都會被提交。
<s:optiontransferselect
lable="請選擇你喜歡的圖書"
name="cnbook"
leftTitle="中文圖書"
rightTitle="外文圖書"
list="{'Struts2權威指南','Java編程思想'}"
multiple="true"
addToLeftLable="向左移動"
selectAllLable="全部選擇"
addAllToRightLable="全部右移"
headerKey="cnKey"
headerValue="---選擇中文圖書---"
emptyOption="true"
doubleList="{'Expert One-on-One J2EE Design and Development','JavaScript: The Definitive Guide'}"
doubleName="enBook"
doubleHeaderKey="enKey"
doubleHeaderValue="---選擇外文圖書---"
doubleEmptyOption="true"
doubleMultiple="true"
/>
屬性說明:
list:設置第一個下拉列表選擇框的集合
listKey:設置第一個下拉列表選擇框的value屬性
listValue:設置第一下下拉列表選擇框的lable屬性
doubleList:設置第二個下拉列表選擇框的集合
doubleListKey:設置第二個下拉列表選擇框的value屬性
doubleListValue:設置第二個下拉列表選擇框的lable屬性
doubleMultiple:設置第二個下拉列表選擇框是否允許多選
updownselect標籤:
使用簡單集合來生成可上下移動選項的下拉選擇框
<s:updownselect name="a" label="請選擇你喜歡的圖書"
lableposition="top"
moveUpLable="向上移動"
list="{'Struts2權威指南','Java編程思想'}"/>
使用簡單Map對象來生成可上下移動選項的下拉選擇框
<s:updownselect name="b" lable="請選擇你喜歡的圖書"
lableposition="top"
moveDownLable="向下移動"
list="{'Struts2權威指南':'2012年8月','Java編程思想':'2012年9月'}"
listKey="key"
listValue="value"
emptyOption="true"
/>
使用集合裏放多個JavaBean實例來生成可上下移動選項的下拉選擇框
<s:bean name="com.service.BookService" id="bs"/>
<s:updownselect name="c" lable="請選擇你喜歡的圖書"
lableposition="top"
selectAllLable="全部選擇"
list="#bs.books"
listKey="author"
listValue="name"
multiple="true"
/>