Struts2 标签库 和 ONGL表达式

1. struts2 标签库的使用

所有标签都统一到一个标签库。

使用OGNL表达式作为基础,因此对集合、对象的访问功能非常强大。

提供许多额外的标签,如日期时间选择器、树形结构,提供主题、模板支持,极大地简化了视图页面的编写。

提供Ajax支持,大大的丰富了视图的表现效果。

不依赖于任何表现层技术。

标签库分类:

Struts2 标签库 和 ONGL表达式插图

标签库的使用

 

Struts2 标签库 和 ONGL表达式插图(1)

2. Struts2常用的表单标签

名称 说明 对应HTML代码
<s:form>标签 用于生成一个HTML form表单 <form></form>
<s:hidden>标签 用于生成一个HTML中的隐藏表单元素 <input type=”hidden”/>
<s:textfield>标签 用于生成一个HTML中的文本框元素 <input type=”text”/>
<s:password>标签 用于生成一个HTML中的密码框元素 <input type=”password”/>
<s:radio>标签 用于生成一个HTML中的单选按钮元素 <input type=”radio”/>
<s:select>标签 用于生成一个HTML中的下拉列表元素 <select><option></option></select>
<s:textarea>标签 用于生成一个HTML中的文本域元素 <textarea></textarea>
<s:checkbox>标签 用于生成一个HTML中的复选框元素 <input type=”checkbox”/>
<s:file>标签 用于生成一个HTML中的文件元素 <input type=”file”/>
<s:submit>标签 用于生成一个HTML中的提交按钮元素 <input type=”submit”/>
<s:reset>标签 用于生成一个HTML中的重置按钮元素 <input type=”reset”/>

Struts2中所有的表单标签类都继承于org.apache.Struts2.components.UIBean类

模板相关属性

属性 说明
templateDir 指定该表单所用的模板文件目录
theme 指定该表单所用的主题
template 指定该表单所用的模板

 

JavaScript相关属性

属性 说明
onclick 指定鼠标单击该标签生成的表单元素时触发的JavaScript函数或代码
ondbclick 指定鼠标双击该标签生成的表单元素时触发的JavaScript函数或代码
onmousedown 指定鼠标在该标签生成的表单元素上按下时触发的JavaScript函数或代码
onmouseup 指定鼠标在该标签生成的表单元素上抬起时触发的JavaScript函数或代码
onmouseover 指定鼠标在该标签生成的表单元素上悬停时触发的JavaScript函数或代码
onmouseout 指定鼠标移出该标签生成的表单元素时触发的JavaScript函数或代码
onfocus 指定该标签生成的表单元素得到焦点时触发的JavaScript函数或代码
onblur 指定该标签生成的表单元素失去焦点时触发的JavaScript函数或代码
onkeypress 指定单击键盘某个键时触发的JavaScript函数或代码
onkeyup 指定松开键盘某个键时触发的JavaScript函数或代码
onkeydown 指定按下键盘某个键时触发的JavaScript函数或代码
onselect 用于下拉列表框等可以选择的表单元素,指定选中该元素时触发的JavaScript函数或代码
onchange 用于文本框等可以接受输入的表单元素,指定当值改变时触发的JavaScript函数或代码

通用属性

属性 说明
cssClass 设置HTML标签的class属性
cssStyle 设置HTML标签的style属性
title 设置HTML标签的title属性
disabled 设置HTML标签的disabled属性
label 设置表单元素的标签
labelPosition 设置label属性值显示的位置
required 指定当前表单元素是否为必填(默认是*)
requiredPosition 设置必填字段显示的必填标记的位置
tabIndex 设置HTML标签的tabIndex属性
name 设置HTML标签的name属性,该属性值必须和Action类的属性对应
value 设置HTML标签的value属性

所有的表单元素标签都存在一个特殊的属性:form

表单主题样式

XHTML、SImple、css_xhtml

防止多次提交表单的标签<s:token/>

在<s:form>标签中添加一个<s:token>标签

为Action配置Token拦截器

为Action配置invalid.token逻辑视图

3. Struts2常用的控制标签

条件逻辑控制标签

  • <s:if>/<s:elseif>/<s:else>
<s:if  test="逻辑表达式">
  标签体
</s:if>
<s:elseif  test="逻辑表达式">
  标签体
</s:elseif>
<!-- 允许出现多次elseif -->
……
<s:else>
  标签体
</s:else>

 

对于<s:if>标签和<s:elseif>标签必须指定一个test属性。

用于条件判断

必须使用OGNL表达式

数组集合迭代标签

  • <s:iterator>
  • <s:append>标签:将集合以追加方式合并为新集合
  • <s:generator>标签:分隔字符串为多个子串
  • <s:merge>标签:将集合以交替方式合并为新集合
  • <s:sort>标签:对集合排序
  • <s:subset>标签:获得集合子集
<s:iterator  var="当前元素"  value="被迭代的集合"  status="当前元素状态信息"       
  begin="起始索引"  end="结束索引"  step="步长">
  标签体
</s:iterator>

value属性必须使用OGNL表达式

标签体中访问当前元素(var属性)必须使用OGNL表达式

标签体中访问当前元素的状态信息(status属性)必须使用OGNL表达式

4. Struts2常用的数据标签

<s:property value="name" escape="false" default="默认值"/>
<!-- 直接访问Action中的方法名 -->
<s:property value="myMethod" />
<!-- 得到属性值string类型的长度 -->
<s:property value="name.length()" />
<!-- 访问静态方法 -->
<s:property value="@com.text.action.TestAction@staticMethod()" />
<!-- 访问静态属性 -->
<s:property value="@com.text.action.TestAction@staticSTR" />
<!-- 访问集合中的元素 -->
<s:property value="users[3]" />
<!-- 访问集合中的某个属性的集合 -->
<s:property value="users.{age}" />
<!-- 访问集合中的某个属性的集合的值 -->
<s:property value="users.{age}[2]" />

<!-- 访问Map中所有key的值 -->
<s:property value="map.keys" />
<!-- 访问Map中所有value的值 -->
<s:property value="map.values" />
<!-- 通过key访问Map中value的值-->
<s:property value="map.key" />或者<s:property value="map.['key']" />
<!-- 访问容器的大小 -->
<s:property value="users.size()" />或者<s:property value="users.size" />

<!-- 集合条件过滤,拿到users这个list里面age=10的所有user对象的name值的数组 -->
<s:property value="users.{?#this.age==10}.{name}" />
<!-- 拿到users这个list里面age>10的所有user对象name值集合的第一个值 -->
<s:property value="users.{^#this.age==10}.name" />
<!-- 拿到users这个list里面age>10的所有user对象name值集合的最后那个值 -->
<s:property value="users.{$#this.age==10}.name" />

 

5. OGNL表达式

Object-Graph Navigation Language,对象图导航语言

自动导航对象的结构并访问和设置对象的数据。

Struts2默认的表达式语言是OGNL。

自动导航对象的结构并访问和设置对象的数据。Struts2默认的表达式语言是OGNL。

OGNL上下文

Struts2 标签库 和 ONGL表达式插图(2)

Struts2将ActionContext设置为OGNL上下文。

Struts2将值栈ValueStack作为OGNL上下文的根对象。

Struts2总是把当前Action实例放置在ValueStack栈顶。

OGNL基本操作

访问值栈对象、访问内置对象

OGNL表达式访问StackContext中的对象时必须使用“#”。

名称 作用 例子
parameters 用于访问HTTP请求参数对应的Map #parameters.name或#parameter[‘name’]相当于request.getParameter(“id”)
request 用来访问HttpServletRequest对应的Map #request.name或#request[‘name’]相当于request.getAttribute(“name”)
session 用于访问HttpSession对应的Map #session.name或#session[‘name’]相当于session.getAttribute(“name”)
application 用于访问ServletContext对应的Map #application.name或#application[‘name’]相当于application.getAttribute(“name”)
attr 依次搜索page、request、session、application范围的属性 #attr.name相当于按顺序在以上四个范围内读取name属性,直到找到为止

访问静态方法和属性

集合操作

  • 直接创建List类型集合 {e1, e2, e3, …}
  • 直接生成Map类型集合 #{key1:value1, key2:value2, …}
  • 投影?:满足指定条件的所有元素。^:满足指定条件的所有元素中的第一个元素。

    $:满足指定条件的所有元素中的最后一个元素。

  • 选择person.{?#this.name==’bill’}

6. Struts2的非表单标签

非表单标签主要用于输出在Action中封装的信息,这在实际运用中是很常见的。

6.1 actionerror标签

<s:actionerror>标签主要用于输出错误信息到客户端,该标签将Action中的信息输出到页面中,实际上,该标签输出的信息是Action实例中的getActionErrors()方法的返回值。

<s:actionerror />
6.2 actionmessage标签

<s:actionmessage>标签主要用于输出提示错误信息到客户端,该标签将Action中封装的信息封装到页面中,实际上,该标签输出的信息是Action实例中的getActionMessage()方法的返回值。

<s:actionmessage/>
6.3 component标签

<s:component>标签主要用于使用自定义标签、模板、主题等。自定义标签、模板、主题可以通过<s:component>标签来获得。

6.4 div标签

<s:div>标签用于生成HTML中的<div>标签,该标签比较简单,仅仅生成一个<div>标签。可以用id/classs属性。

6.5 fielderror标签

<s:fielderror>标签用来输出Action中的fieldErrors属性保存的字段错误,fieldErrors是一个Map类型的属性,当在数据校验、类型转换发生错误时,相关信息就会存储在该Map类中,通过该标签就可以将这此信息输出。

<s:fielderror/>

 

文章已创建 80

发表评论

电子邮件地址不会被公开。 必填项已用*标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部