一、通用標簽 1.s:property (讀取值棧中對象的屬性值) 屬性:value:指定OGNL表達式;default:OGNL表達式返回為 null 時,使用預設值;escape:是否對 HTML 特殊字元進行轉義 e1:讀取對象棧中對象的屬性值 e2:訪問Map棧,讀取Session域中對象的 ...
一、通用標簽
1.s:property (讀取值棧中對象的屬性值)
屬性:value:指定OGNL表達式;default:OGNL表達式返回為 null 時,使用預設值;escape:是否對 HTML 特殊字元進行轉義
e1:讀取對象棧中對象的屬性值
<s:property value="[1].userName"/>
e2:訪問Map棧,讀取Session域中對象的屬性值
<s:property value="#session.sessionKey"/>
e3:訪問Map棧,通過attr讀取域對象中的屬性值
<s:property value="#attr.requestAttrKey"/>
e4:若不指定 value 值,則返回棧頂對象
2.s:url(創建一個 url 地址字元串)
屬性:value:創建 url 地址字元串;action:帶有 ContextPath 和 .action 尾碼
e1:通過value屬性創建URL地址字元串
<s:url value="url"/> <!-- url--> <s:url value="/url"/> <!-- /struts2/url 帶有 ContextPath-->
e2:通過action屬性創建URL地址字元串
<s:url action="actionUrl"/> <!-- /struts2/actionUrl.action 不需要再次指定 / -->
e3:通過action屬性和namespace屬性以及method屬性創建URL地址字元串
<s:url action="acitonUrl" namespace="test" method="dynamicMethod"/> <!-- test/acitonUrl!dynamicMethod.action -->
e4:創建帶請求參數的URL地址字元串
<s:url value="/urlParam"> <s:param name="userId" value="'zsmj'"/> </s:url> <!-- /struts2/urlParam?userId=zsmj --> <!-- 1.s:param 標簽:給父標簽傳遞參數 2.value:若不加單引號,則從值棧中查找,若值棧中找不到則不添加該參數;加單引號按字元串輸出 -->
e5:創建包含GET方式傳遞過來的請求參數的URL地址字元串
<s:url value="/urlParam" includeParams="get" />
e6:創建不包含contextPath的URL地址字元串
<s:url value="/urlParam4" includeContext="false"/>
3.s:set(將鍵值對存入域對象)
屬性:var:存入域對象中的 name 值;value:存入域對象中的 value 值; scope:域對象的範圍;其他兩個屬性都是過時的
e1:將attrName01="attrValue01"存入Session域
<s:set var="attrName01" value="'attrValue01'" scope="session"/> <s:property value="#session.attrName01" />
e2:預設存入 request 域中
e3:value 可以為 OGNL 表達式,值為對應值棧中的值
<s:set value="#attr.attrName01" var="attrName03"/> <s:property value="#attr.attrName03"/>
4.s:push(將一個對象臨時壓入棧頂,標簽結束後彈出)
屬性:value:要壓入棧頂的對象,可以為 OGNL 表達式 對應的值棧中的值
<s:push value="'pushObj'"> <s:property/> <!-- pushObj --> </s:push> <s:property/> <!-- com.nucsoft.struts2.helloworld.TestTagAction@7202555 -->
5.s:if、s:elseif、s:else
屬性:test: 布爾值
e1:傳入以age為鍵的請求參數,根據age的不同值測試不同分支條件
<s:if test="#parameters.age[0]>18">大於18歲了</s:if> <s:elseif test="#parameters.age[0]<18">小於18歲</s:elseif> <s:else>等於18歲了</s:else>
6.s:iterator(遍曆數組、Collection集合、Map集合,將遍歷得到的每一個結果放入棧頂,本次迴圈結束時彈出)
屬性:value:要遍歷的內容;var:將遍歷得到的值以字元串的形式放入請求域,如果不指定則放入棧頂;status:IteratorStatus類型,會放入到請求域中;begin:遍歷開始索引位置;end:遍歷結束索引位置,包含;step:步長,指定負數則倒序遍歷。
e1:遍歷集合
<s:iterator value="#attr.list"> <s:property/> </s:iterator>
e2:遍歷Map
<s:iterator value="#attr.map"> <s:property value="key"/> <s:property value="value"/> </s:iterator>
7.s:sort(對數組、Collection集合或Map集合中的元素進行排序)
屬性:
source:要比較的集合對象
var:將排序好的集合對象放入pageScope,若不指定,則存入值棧棧頂
comparator:比較器對象
8.s:date(格式化日期)
屬性:
name:指定一個 OGNL 表達式,用於讀取要格式化的日期對象
format:日期格式字元串,如"dd/MM/yyyy"
var:若有值,則以此值為key,存放到域對象中,若沒指定,則輸出。
9.s:a(創建一個超鏈接)
屬性:
href:將指定字元串原封不動的作為超鏈接的 href 值,不支持EL 表達式,如要從值棧中獲取數據,可以使用強制 OGNL 解析,%{OGNL表達式}%
value:不加 /,和 href 一樣,加 / ,自動加入 ContextPath
二、表單標簽
1.總覽
Struts2標簽名 |
對應的HTML元素 |
s:form |
form |
s:textfield |
input type=”text” |
s:password |
input type=”password” |
s:hidden |
input type=”hidden” |
s:submit |
input type=”submit” |
s:textarea |
textarea |
s:radio |
input type=”radio” |
s:select |
select/option |
s:optiongroup |
optiongroup/option |
s:checkboxlist |
input type=”checkbox” |
s:checkbox |
單一的input type=”checkbox” |
2.表單標簽的通用屬性
屬性名 |
類型 |
作用 |
label |
String |
指定一個表單元素在XHTML和Ajax主題下的行標,在simple主題下無效 |
name |
String |
指定一個表單元素的name屬性值,一個輸入元素的name屬性將被自動映射(或註入)到一個Action類中由setXxx()方法定義的屬性 |
value |
String |
指定一個表單元素的value屬性值 |
cssClass |
String |
指定一個表單元素的class屬性值 |
cssStyle |
String |
指定一個表單元素的style屬性值 |
title |
String |
指定一個表單元素的title屬性值 |
disabled |
String |
指定一個表單元素的disabled屬性值 |
labelPosition |
String |
指定一個表單元素在XHTML和Ajax主題下的行標位置,可選值[top|left] |
key |
String |
這個輸入欄位所代表的屬性的名字,name和label屬性的快捷方式 |
required |
boolean |
在XHTML主題中,指定該屬性是否加* |
requiredPosition |
String |
指定一個表單元素的*的位置,可選值[left|right] |
tabIndex |
String |
指定HTML標簽的tabindex屬性 |
3.s:form 標簽
屬性名 |
類型 |
預設值 |
作用 |
action |
String |
當前action |
當前表單提交的目標Action |
enctype |
String |
—— |
表單的enctype屬性 |
method |
String |
POST |
表單提交的請求方式 |
namespace |
String |
當前namespace |
目標Action所從屬的命名空間 |
acceptcharset |
String |
—— |
當前表單所接受的字元集,多個字元集用逗號或空格隔開 |
onsubmit |
String |
—— |
用於綁定onsubmit事件的句柄 |
openTemplate |
String |
—— |
用來打開這個表單的模板 |
portletMode |
String |
—— |
在用戶提交這個表單後將顯示的portlet模式 |
target |
String |
—— |
表單的target的屬性 |
validate |
boolean |
false |
在XHTML/Ajax主題下是否進行客戶端輸入驗證 |
windowState |
String |
—— |
用戶提交表單後將顯示的視窗狀態 |
4.s:textfield標簽(生成一個單行文本框)
屬性名 |
類型 |
預設值 |
作用 |
maxlength |
int |
—— |
生成文本框後最多能容納多少個字元 |
readonly |
boolean |
false |
生成的文本框是否為只讀 |
size |
int |
—— |
生成的文本框的寬度 |
key |
可以同時代替 name 和 label 屬性 |
5.s:password標簽(生成一個密碼框)
說明:擴展自 s:textfield ,多了一個 showPassword 屬性,為 布爾型,決定要不要顯示輸入的密碼
6.s:hidden 標簽(用於生成一個表單隱藏域)
7.s:submit標簽(用於生成表單提交按鈕)
屬性名 |
類型 |
預設值 |
作用 |
align |
String |
right |
XHTML/Ajax主題下控制提交按鈕的對齊方向 |
type |
String |
input |
XHTML/Ajax主題下控制提交按鈕的顯示方式,可選值[input|button|image] |
src |
String |
—— |
當type=image時,使用src屬性指定圖片路徑 |
8.s:textarea標簽(用於生成多行文本域)
屬性名 |
類型 |
預設值 |
作用 |
cols |
int |
—— |
textarea標簽的cols屬性 |
rows |
int |
—— |
textarea標簽的rows屬性 |
readonly |
boolean |
false |
指定當前元素是否為只讀 |
9.有選擇功能的標簽的通用屬性
list屬性:指定用於生成多選框的list集合
listKey屬性:指定生成的多選框的value屬性
listValue屬性:指定每一個多選框旁邊的說明文字
name屬性:指定生成的多選框的name屬性
如果list屬性讀取的是一個Map,則可以由Map的鍵生成多選框的value屬性,Map的值生成多選框旁邊顯示的文字,所以此時不需要指定listKey和listValue屬性。
10.s:radio標簽(生成一組單選按鈕)
<s:radio list="#{'male':'男','female':'女'}" name="gender" label="性別"></s:radio>
11.s:select標簽(生成下拉列表)
屬性名 |
類型 |
預設值 |
作用 |
emptyOption |
boolean |
false |
指定是否在標題下麵插入一個空白選項 |
headerKey |
String |
—— |
選項列表中第一個選項的鍵 |
headerValue |
String |
—— |
選項列表中第一個選項的值 |
multiple |
boolean |
false |
指定是否多選 |
size |
int |
—— |
同時顯示在頁面里的選項個數 |
10.s:optiongroup標簽(示選項的分組,每個分組有自己數據的來源)
<s:optgroup label="opt01" list="#{'aa':'AA','bb':'BB' }"></s:optgroup> <s:optgroup label="opt02" list="#{'aa':'AA','bb':'BB' }"></s:optgroup>
11. s:checkboxlist標簽(生成一組多選框)
<s:checkboxlist list="#request.cities" listKey="cityId" listValue="cityName" name="love" label="喜愛的城市"> </s:checkboxlist>
12.s:checkbox標簽(在頁面上提供一個勾選框,用於提交一個布爾值,典型的應用是“是否同意”)
<s:checkbox name="married" label="婚否"></s:checkbox> <input type="checkbox" name="married" value="true" id="userAction_married"/> <input type="hidden" id="__checkbox_userAction_married" name="__checkbox_married" value="true" /> <label for="userAction_married" class="checkboxLabel">婚否</label>