struts2基础——标签
一、通用标签
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>