Struts2 UI標籤

來源:互聯網
上載者:User

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方法添加

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.