struts2基础——标签

时间:2022-02-15 15:35:06

一、通用标签

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>