`
coconut_zhang
  • 浏览: 531491 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论
阅读更多

Struts2标签库概述
使用标签的优势:
使用简单 可维护性强 复用性高

标签库分类:

-4-

导入Struts2标签库
在JSP页面中使用Struts2标签库中提供的标签,必须使用 taglib指令导入Struts2标签库
<%@taglib prefix="s" uri="/struts-tags"%>

prefix属性指定标签的前缀,此处指定标签的前缀为“s”,即使用 属性指定标签的前缀,此处指定标签的前缀为“ , 属性指定标签的前缀 Struts2标签库中的任一标签时,前面都应加上“s:”,例如 标签库中的任一标签时, 标签库中的任一标签时 前面都应加上“ , “<s:property>” uri属性指定标签库描述文件的路径,此处设为“/struts-tags”,与 属性指定标签库描述文件的路径, 属性指定标签库描述文件的路径 此处设为“ , struts-tags.tld文件中的默认 一致,使JSP页面具有更好的兼容 文件中的默认uri一致 文件中的默认 一致, 页面具有更好的兼容 性

-5-

OGNL与值栈
对象图导航语言 Object Graph Navigation Language, 是Struts2框架默认的表达式语言 值栈中的对象:
临时对象 模型对象 action对象 对象
OgnlContext application(Map类型) session(Map类型) request(Map类型)



parameters(Map类型)

attr(Map类型)

ValueStack(root

)

HttpServletRequest对象

ServletContext对象 其他对象

-6-

OGNL语法
根对象的属性直接访问 非根对象的属性使用“ 访问 非根对象的属性使用“#”访问 在Struts2框架中,ValueStack对象是OGNL的根对象,所以 ValueStack中对象的属性可以直接访问 访问其他对象,必须使用“#”
parameters对象:用于访问HTTP请求参数。例如,#parameters.name相 对象:用于访问 请求参数。 对象 请求参数 例如, 相 当于调用HttpServletRequest对象的 对象的getParameter("name")方法 当于调用 对象的 方法 request对象:用于访问 对象: 属性, 对象 用于访问HttpServletRequest属性,例如,#request.name相 属性 例如, 相 当于调用getAttribute("name")方法 当于调用 方法 session对象:用于访问 对象: 对象, 对象 用于访问HttpSession对象,例如,#session.name相当于调用 对象 例如, 相当于调用 getAttribute("name")方法 方法 application对象:用于访问 对象: 对象, 对象 用于访问ServletContext对象,例如,#application.name 对象 例如, 相当于调用ServletContext的getAtrribute("name")方法 相当于调用 的 方法 attr对象:用于按照 对象: 对象 用于按照page-->request-->session-->application顺序访问其属性 顺序访问其属性

-7-

OGNL集合表达式
List
{e1,e2,e3…}

Map
#{key1:value1,key2:value2,......} in: not in: : ^: $:

某个元素是否在指定的集合对象中 某个元素是否不在指定的集合对象中 获得所有符合逻辑的元素 获得符合逻辑的第一个元素 获得符合逻辑的最后一个元素

-8-

数据标签
数据标签主要用来提供各种数据访问功能
标签名 action bean date debug i18n include param property push set text url 描述 该标签用来直接调用一个Action,根据executeResult参数,可以将该Action的处 理结果包含到页面中 该标签用来创建一个JavaBean对象 该标签用来格式化输出一个日期属性 该标签用来生成一个调试链接,当点击该链接时,可以看到当前值栈中的内容 该标签用来指定国际化资源文件的baseName 该标签用来包含其他的页面资源 该标签用来设置参数 该标签用来输出某个值,该值可以是值栈或ActionContext中的值 该标签用来将某个值放入值栈 该标签用来设置一个新的变量,并把新变量存储到特定的范围中 该标签用来输出国际化信息 该标签用来生成一个特定的URL -9-

property标签 标签
property标签的作用是输出指定值 输出value属性指定的值,如果没有指定value属性,则默 认输出ValueStack栈顶的值
属性名 default escape value id 是否必须 否 否 否 否 描述 如果输出的属性值为null,则显示default属性指定的值 默认为true,即不解析HTML标签,如果设定为false则 默认解析HTML标签 指定需要输出的属性值,如果没有指定该属性,则默 认输出ValueStack栈顶的值 指定该元素的标识

示例:4.D.1 success.jsp
-10-

param标签 标签
param标签主要用于为其他标签提供参数
属性名 name value id 是否必须 否 否 否 描述 指定被设置参数的参数名 指定被设置参数的参数值,该值为Object类型 指定引用该元素的ID

<s:param name="user">zhangsan</s:param> <s:param name="user" value="'zhangdan'"/> <s:param name="user" value="zhangdan"/>

-11-

bean标签 标签
bean标签主要用于创建一个JavaBean的实例
属性名 name 是否必须 是 否 描述 该属性指定要实例化的JavaBean实现类 如果指定了该属性,则JavaBean实例就会放入 OgnlContext对象中,从而允许直接通过该id属 性来访问该JavaBean实例。如果不指定id属性, JavaBean实例则被放置在值栈中

id

<s:bean name="com.haiersoft.ch04.model.Person"> <s:param name="name" value="'zhangsan'" /> <s:param name="age" value="18" /> 姓名为:<s:property value="name"/><br/> 年龄为:<s:property value="age"/> </s:bean> <s:bean name="com.haiersoft.ch04.model.Person" id="p"> <s:param name="name" value="'zhangsan'" /> <s:param name="age" value="18" /> </s:bean> 姓名为:<s:property value="#p.name" /><br /> 年龄为:<s:property value="#p.age" />

-12-

set标签 标签
set标签主要用于将某个值放入指定的范围内
属性名 是否必须 name scope 是 否 否 否 设置变量的名称 用来指定变量的有效范围,该属性值可以是application、 session、request、page或action。如果没有指定该属 性,则默认将该变量放置在OgnlContext中 用来设置变量的值,如果没有指定该属性,则将 ValueStack栈顶的值赋给该变量 该属性指定该元素的应用ID 描述

value id

<s:set name="p1" value="#p" /> <s:set name="p2" value="#p" scope="application" /> <s:set name="p3" value="#p" scope="session" />

-13-

include标签 标签
include标签主要用于将一个JSP页面或一个Servlet包含到 本页面中
属性名 是否必须 value id 是 否 描述 该属性指定需要被包含的JSP页面或Servlet 该属性指定该元素的应用ID

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@taglib prefix="s" uri="/struts-tags"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>include标签</title> </head> <body> <s:include value="file.jsp"/> </body> </html>
-14-

url标签 标签
url标签主要用于生成一个URL地址
属性名 action value includeParams scheme namespace method encode includeContext anchor id escapeAmp 是否必须 否 否 否 否 否 否 否 否 否 否 否 描述 指定生成的URL地址为哪个Action,如果action没有提供值,就使 用value作为URL的地址值 指定生成URL的地址值,如果value没有提供值,就使用action属性 指定的Action作为URL地址 指定是否包含请求参数,该属性的值可为none、get或all 设定scheme属性 指定命名空间,与action结合使用,而与value结合使用时没有意义 指定使用Action的方法 指定是否需要对请求参数进行编码 指定是否需要将当前上下文包含在URL地址中 指定URL的锚点 指定该url元素的引用ID,使用该属性时,生成的URL不会在页面 上输出,但可以引用 指定是否将特殊符号“&”解析成实体“&amp” -15-

控制标签
数据标签主要用于完成流程控制,例如分支、循环等操作, 也可以完成对集合的合并、排序等操作
标签名 if elseIf/elseif else append generator iterator merge sort subset 该标签用于控制选择输出 该标签同if标签结合使用,用来控制选择输出 该标签同if标签结合使用,用来控制选择输出 该标签用于将多个集合拼接成一个集合 该标签是一个字符串解析器,用来将一个字符串解析成一个集合 该标签是一个迭代器,用来迭代输出集合中的数据 该标签用于将多个集合拼接成一个集合,在使用方式上与append有区别 该标签用于对集合进行排序 该标签用于截取集合的部分集合,形成新的子集合 描述

-16-

if/elseif/else标签 标签
if、elseif、else这3个标签都用来进行分支控制。其中,if 和elseif标签利用test属性的值来决定是否计算并输出标签 体的内容
<!-- 判断成绩是否及格,不及格,良,优 --> <s:set name="score" value="99" /> <s:if test="%{#score<60}"> 成绩为: 成绩为:不及格 </s:if> <s:elseif test="%{#score>=60&&#score<80}"> 成绩为:及格 成绩为: </s:elseif> <s:elseif test="%{#score>=80&&#score<90}"> 成绩为: 成绩为:良 </s:elseif> 示例 <s:else> 4.D.2 成绩为: 成绩为:优 if-elseif-else.jsp </s:else>
-17-

iterator标签 标签
iterator标签主要用于对集合进行迭代,其中集合类型可以 是List、Set、Map或数组
属性名 是否必须 value id status 否 否 否 描述 指定迭代集合,通常使用OGNL表达式指定。如果没有 指定value属性,则使用ValueStack栈顶的集合 指定集合中元素的ID 指定迭代时的IteratorStatus实例,用于获取迭代状态

<table border=1 width=200> <s:iterator value="{'JavaSE程序设计教程 程序设计教程', 程序设计教程 'JavaEE轻量级框架 轻量级框架-S2SH', 轻量级框架 'JavaWeb程序设计 id="bookName"> 程序设计'}" 程序设计 示例 <tr> 4.D.2 iterator.jsp <td><s:property value="bookName" /></td> </tr> </s:iterator> </table>
-18-

主题和模板
模板是一个标签的显示风格 多个模板构成一个主题 Struts2框架默认主题:

通过下面几种方式使用主题:
通过设定特定UI标签中的 通过设定特定 标签中的theme属性来指定主题 标签中的 属性来指定主题 通过设定特定UI标签外围 标签外围form标签的 标签的theme属性来指定主题 通过设定特定 标签外围 标签的 属性来指定主题 通过取得page范围内名称为 范围内名称为theme的属性值来确定主题 通过取得 范围内名称为 的属性值来确定主题 通过取得request范围内名称为 范围内名称为theme的属性值来确定主题 通过取得 范围内名称为 的属性值来确定主题 通过取得session范围内名称为 范围内名称为theme的属性值来确定主题 通过取得 范围内名称为 的属性值来确定主题 通过取得application范围内名称为 范围内名称为theme的属性值来确定主题 通过取得 范围内名称为 的属性值来确定主题 通过取得名为struts.ui.theme的常量值来确定主题,该常量默认值为 的常量值来确定主题, 通过取得名为 的常量值来确定主题 该常量默认值为xhtml, , 可以在struts.xml或struts.properties文件中配置 可以在 或 文件中配置
-19-

表单标签
Checkboxlist Combobox

数据标签主要用于进行 数据的输入和用户交互等操作 Struts2提供了很多表单标签, 大部分表单标签和 HTML表单元素之间一一对应

Datetimepicker Doubleselect File Form Hidden select optiontransferselect radio optgroup token textarea updownselect password textfiled submit reset -20-

checkboxlist标签 标签
checkboxlist标签可以一次创建多个复选框
属性名 list 是否必须 是 否 描述 指定集合属性值。如果list属性为一个Map类型(key-value对),在 默认情况下,key赋值给标签的value,value则对应标签的Label 指定集合元素中的某个属性作为复选框的value。如果集合为Map 类型则可以使用key和value分别代表Map对象的key和value作为复 选框的value 指定集合元素中的某个属性作为复选框的label。如果集合为Map 类型则可以使用key和value分别代表Map对象的key和value作为复 选框的Label

listKey

listValue



<!-- 使用简单集合对象生成多个复选框 --> <s:checkboxlist name="books" labelposition="top" label="选择您喜欢的图书" list="{'JavaSE程序设计教程','JavaEE轻量级框架-S2SH','JavaWeb程序设计'}"/> <!-- 使用简单Map对象生成多个复选框 --> <s:checkboxlist name="books1" labelposition="top" label="请选择图书的出版日期" list="#{'JavaSE程序设计教程':'2010年7月', 'JavaEE轻量级框架-S2SH':'2010年8月', 示例 4.D.3 'JavaWeb程序设计':'2010年9月'}" checkboxlist.jsp listKey="key" listValue="value"/> -21-

datatimepicker标签 标签
datetimepicker标签生成一个日期、时间下拉选择框
<s:datetimepicker name="mydate" toggleType="explode" value="today" type="date" language="zh_CN" displayFormat="yyyy-MM-dd"/>

示例 4.D.3 datetimepicker.jsp

-22-

optiontransferselect标签 标签
optiontransferselect标签创建两个选择项以及转移下拉列 表项
<s:optiontransferselect list="{'会计','出纳','仓库管理员'}" headerKey="headerKey" headerValue="---请选择---" doubleHeaderValue="---请选 择---" doubleHeaderKey="doubleHeaderKey" name="leftRecords" leftTitle="未选角色" rightTitle="已选角色" doubleList="'总经理','董事长'" doubleName="rightRecords" /> 示例 4.D.3 optiontransferselect.jsp

-23-

optgroup标签 标签
optgroup标签生成一个下拉列表框的选项组
<s:select label="请选择" name="select" list="{'开发工具','Web应用'}"> <s:optgroup label="开发语言" list="#{'Java':'Java','C#':'C#','C++':'C++','Dephi':'Dephi'}" /> <s:optgroup label="技术图书 " list="#{'JavaSE程序设计教程':'JavaSE程序设计教程', 'JavaEE轻量级框架-S2SH':'JavaEE轻量级框架-S2SH', 'JavaWeb程序设计':'JavaWeb程序设计'}" /> </s:select>

示例 4.D.3 optgroup.jsp

-24-

非表单标签
非表单标签用来生成页面中不存在于表单中的可视化元素
标签名 actionerror 描述 该标签用来输出Action中getActionErrors()方法返回的异常信息

actionmessage 该标签用来输出Action中getActionMessage()方法返回的信息 component div fielderror tabbedPanel tree treenode 该标签用来生成一个自定义组件 该标签用来生成一个div片段 该标签用来输出异常提示信息,如果Action实例存在表单域的类型转 换错误,校验错误,该标签负责输出这些信息 该标签用来生成HTML页面中的Tab页 该标签用来生成一个树形结构 该标签用来生成树形结构的节点

-25-

actionerror和actionmessage标签 和 标签
actionerror和actionmessage标签在页面上输出Action中相 应方法产生的信息
public String execute() { addActionError("Action中封装Error信息"); addActionMessage("Action中封装Message信息"); return SUCCESS; } <body> <s:actionerror /> <s:actionmessage /> </body>

示例 4.D.4

-26-

tree和treenode标签 和 标签
tree标签用来生成一个树形结构,而treenode标签则用来 生成一个树形结构的节点
<body> <s:tree theme="ajax" id="root" label="权限管理系统"> <s:treenode theme="ajax" label="用户管理" id="user"> <s:treenode theme="ajax" label="用户添加" id="user_add" /> <s:treenode theme="ajax" label="用户列表" id="user_list" /> </s:treenode> <s:treenode theme="ajax" label="权限管理" id="auth"> <s:treenode theme="ajax" label="权限添加" id="auth_add" /> <s:treenode theme="ajax" label="权限列表" id="auth_list" /> </s:treenode> <s:treenode theme="ajax" label="角色管理" id="role"> <s:treenode theme="ajax" label="角色添加" id="role_add" /> 示例 4.D.4<s:treenode theme="ajax" label="角色列表" id="role_list" /> </s:treenode> </s:tree> </body>
-27-

小结
Struts2标签库可以简单的分为UI标签、非UI标签和Ajax标签 Struts2标签库不依赖于任何表现层技术。Struts2提供的大部分标签都可以在 各种表现层技术下使用,如JSP、Velocity或FreeMarker等模板技术 对象图导航语言OGNL是一种功能强大且语法简单的表达式语言,可以存取对 象的任意属性,调用对象的方法等 OGNL是Struts2框架视图默认的表达式语言,是Struts2框架的特点之一 数据标签主要用来提供各种数据访问功能,包含action、bean、date等 控制标签主要完成流程控制,例如分支、循环等操作,其中分支使用if、elseif、 else标签,循环使用iterator标签 模板就是一个标签在页面上的显示风格,对于相同的标签,如果使用不同的 模板,那么在页面上就会显示出不同的风格特征 主题就是把一组模板打包在一起,从而提供通用的功能。如果为所有的UI标 签指定了模板,那么这些模板就形成了一个主题 Struts2表单标签可分为:form标签本身和表单元素标签两种 表单标签可以进行用户数据的输入和用户交互等操作 非表单标签用来在页面中生成非表单的可视化元素,如Tab页面、树形结构等

-28-

几种常用标签用法
s:property
– <s:property value=“username”/>

s:iterator
– <s:iterator value=“list" var="a">

s:actionerror
– addActionError(“error”) – <s:actionerror/>

s:actionmessage
– addActionMessage(“message”) – <s:actionmessage/>

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics