Struts2 UI標籤
主題和模板 所有UI標籤基於主題和模板 一個模板就是使用JSP,Velocity或者Freemarker編寫的檔案,用於產生html,將一些具有共同觀感的模板組織到一起就形成了主題。struts2使用目錄名作為主題名,具有共同觀感的模板檔案放置在同一個目錄下。
作為一個jsp頁面中的ui標籤,既可以設定該UI標籤需要使用的模板,也可以設定該ui標籤使用的主題,不推薦直接設定模板屬性,而選擇特定主題
設定主題方法: 優先順序也是下面的順序
1.通過設定特定UI標籤上的tehme屬性來指定主題
2.通過設定特定UI標籤外圍的Form標籤的theme屬性來指定主題
3.通過驅動的page會話範圍內以theme為名稱的屬性來確定主題
4.通過取得request範圍內以theme為名稱的屬性來確定主題
5.通過取得session範圍內以theme為名稱的屬性來確定主題
6.通過取得application範圍內以theme為名稱的屬性來確定主題
7.通過取得名為struts.ui.theme的常量(預設值是xhtml)來確定主題,該變數可以在struts.properties檔案或者struts.xml檔案中確定。
內建主題:
simple(預設主題) , xhtml , css_xhtml , ajax
xhtml ,css_xhtml主題都是對simple主題的封裝和擴充
simple主題,每個UI標籤只產生一個簡單的html元素,不會產生其它額外的內容
xhtml主題,Strutss的預設主題,對simple進行了擴充,在該主題的基礎增加如下附加特性
1.針對html標籤使用標準的兩列表格版面配置
2.每個html標籤的label,既可以出現在html元素的左邊,也可以出現上邊,取決於lableposition屬性的設定
3.自動輸出校正錯誤資訊
4. 輸出javascript的用戶端校正
css_html 對xhtml主題上加入css樣式控制
ajax對xhtml主題上為每個標籤提供了額外的ajax支援。ajax支援是以dojo和dwr為基礎的
增加如下功能
1.增加ajax方式的用戶端校正
2.支援遠端資料表單的非同步提交(最好和submit標籤一起使用)
3.提供進階的div標籤,允許實現局部更新html的功能
4.提供進階的a標籤,允許動態載入並執行遠端的javaScript代碼
5.提供支援ajax的tabbedPanel
6.提供富用戶端模型的pub-sub事件模型
分為表單標籤和非表單標籤
表單標籤 from標籤和某個表單元素的標籤
form
textfield password
radio checkbox
checkboxlist select
doubleselect combobox optiontrasferselect
optgroup
updownselect textera
hidden file
reset submit token head
label
通用屬性都繼承了UIBean類
①與模板相關的屬性,可以指定表單標籤所用的模板和主題的
templateDir
String
指定模板目錄
theme
String指定主題名稱
template
String
指定模板名稱
②與javaScript相關的屬性其中主題為simple
onclick
onchange
onmousedownonmouseover
onmouseout
onfocus
onblur
onselect
onkeyup(鬆開)
onkeydown(按下)
onkeypress(表單上單擊某字元鍵)
ondblckick(表單元素上雙擊)
③工具相關的屬性
tooltip
String
設定此組件工具提示
tooltipConfig
String
設定工具提示的各種屬性
④表單標籤的通用屬性
cssClass
cssStyletitle
disabled
label(表單元素關聯lable)labelposition(label位置)
requiredposition(指定必填標記 “+” )name(表單name映射與action對應)
required(是否在表單元素的lable上添加+)
tableindex
value
key(設定表單元素對應的action的屬性名稱)
⑤所有的表單元素標籤都存在一個特殊的屬性 form。
作用:參考資料表單元素所在的表單,通過該form屬性可以實現表單元素和表單之間的互動
通過${parameters.form.id}取得表單元素所在表單的ID
name value屬性詳解:
name屬性會映射到Action中的屬性名稱,value屬性則代表此屬性的值。
推薦第一種,struts2已經自動處理了屬性內容的賦值工作
①將下面文字框的值綁定到Action的person屬性的firstName
<s:textfield name="person.firstName" />
②使用運算式產生表單元素的值
<s:textfield name="person.firstName" value="${pserson.firstName}"/>
提供了大量的表單標籤,大部分的表單標籤和HTML表單元素之間有一一對應的關係
常用和特殊的表單標籤:
①form標籤:輸出一個HTML表單
action 可選 指定提交的action。不要添加.action尾碼
namespace method
enctype
上傳檔案時設為multipart/form-data
foucusElement
指定某個元素id,頁面載入該元素具有焦點
validate
是否執行用戶端驗證。只有使用xhtml或者ajax主題時候有效
②submit標籤 用於輸出一個提交按鈕
input
imagebutton
type [input image button] src[ 為image類型的圖片地址]
action[指定處理請求的action]method
[指定處理請求的action方法]
③textfield標籤,一個單行文字框
maxlength [輸入字元最大長度] readonly[唯讀] size[可視尺寸]
④password標籤,輸出一個口令輸入框
maxlength [輸入字元最大長度] readonly[唯讀] size[可視尺寸] showPassword[是否顯示密碼]
⑤textarea,輸出一個多行文字框
cols[列] rows[行] readonly[唯讀] wrap[是否換行]
⑥select 輸出一個下拉式清單方塊 必須指定list屬性指定集合[普通集合 map 集合中的對象執行個體]
list[迭代的集合 如果為Map 則key成為選項的value map的value則成為選項的內容]
multiple[是否多選]
size[顯示的選項個數]
listkey[指定集合中那個屬性作為選項的value]
listvalue[指定集合中對象中的那個屬性作為選項的內容]
headerKey[如果選擇了header,提交的value如果使用該屬性不能設為空白值]
headerValue[顯示在header選項內容]
emptyOption[是否在header後添加一個空選項]
常用表單標籤用法
<s:form>
<s:textfield name="username" label="使用者名稱:">
<s:password name="password" label="密碼:">
<s:textarea name="personal" cols="30" rows=“5” label="簡歷:">
<s:select name="education" label="最高學曆"
list="#{ 1 : ' 高中 ' , 2 : ' 大學 ' }"/>
<s:submit value="提交">
<s:form>
特殊標籤
①checkbox checkboxlist【多選】 可以一次建立多個複選框。用於產生多個check boxhtml標籤 必須指定list
list 必須
指定要迭代迭代的集合。如果是map 則key成為value value成為內容
listKey 指定集合對象的那個屬性作為屬性key
listValue 制定集合對象的那一個屬性作為選項的內容
②combobox 產生一個單行文字框和下拉式清單方塊的結合,但兩個表單元素只對應一個請求參數,只有單行文字框內的值才包含請求參數,而下拉式清單方塊只是輔助輸入
list 必須
產生各個選項
maxlength 大行文字框輸入字元的最大長度
readonly size
可視尺寸和唯讀
③doubleselect 比較有用
產生一個級聯列表。為兩個列表框設定選項
list listkey
listvalue headerkey
headervalue emptyOption
multiple size
doubleid doublelist
doublelistkey doublelistvalue
doublesize doublename
doublevalue
④head用於聲稱html的head 用於聲稱對CSS和js的引用
使用 theme="ajax"可以講Ajax的頭資訊包含在頁面中
⑤token 防止多次提交 避免重新整理頁面多次提交
在struts2設定檔中啟用TokenInteceptor或者TokenSessionStoreInterceptor 攔截器
原理在表單添加一個隱藏欄位,每次加在頁面頁面的值不同。而攔截器攔截隱藏欄位的值如果兩次值相同則組織表單提交。
<s:from><s:token/></s:from>
特殊表單標籤用法
<s:head />
<s:form name="test">
<s:checkboxlist name="interest"
list="{'1','2','3','4'}"
label="興趣"/>
<s:combobox label="資訊渠道" name="channel"
list = " { ' 1 ' , ' 2 ' , ' 3 ' } "
headerkey="-1"
headerValue="請選擇"
emptyOption="true"/>
<s:doubleselect
lable="所在省" name="province"
list = " { ' 1 ' , ' 2 ' , ' 3 ' } "
doubleList="
top ==
' 1 ' ? { ' 1 ' , ' 2 ' , ' 3 ' }
: top
==
' 2 ' ? { ' 1 ' , ' 2 ' , ' 3 ' }
: top
==
' 3 ' ?
{ ' 1 ' , ' 2 ' , ' 3 ' }
"/>
</s:form>
非表單標籤
a href[產生url地址]
actionerror actionmessage 輸出資訊。前者輸出action執行個體的getActionError方法傳回值
後者輸出getActionMessage()方法的傳回值
actino中通過 addActionError addActionMessage方法添加