




已阅读5页,还剩50页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
struts2 标签详解 要在 jsp 中使用 Struts2 的标志,先要指明标志的引入。通过 jsp 的代码的 顶部加入以下的代码: If elseif else 描述: 执行基本的条件流转。 参数: 名称 必需 默认 类型 描述 备注 test 是 boolean 决定标志里 的内容是否显示 的表达式 else 标 志没有这个 参数 id 否 Object/S tring 用来标识元 素的 id。在 UI 和 表单中为 HTML 的 id 属性 例子: 60“ 老年人 35“ 中年人 15“ id=“wawa“ 青年人 少年 “/ zhaosoft here zxl here other is here Iterator(迭代) 描述:用于遍历集合(java.util.Collection)或枚举值(java.util.iterator) 参数 名称 必需 默认 类型 描述 status 否 String 如果设置此参数,一 个 IteratorStatus 的实例 将会压入每一个遍历的堆 栈 value 否 Object/S tring 要遍历的可枚举的 (iteratable)数据源,或者 将放入的新列表(List)的 对想 id 否 Object/S tring 用来标识元素的 id。 在 ui 和表单中为 HTML 的 id 属性 I18n(国际化操作) 描述: 加载资源包到值堆栈。它可以允许 text 标志访问任何资源包的信息。而不 只当前的 action 相关联的资源包。 名称 必需 默认 类型 描述 name 是 Object/S tring 资源包的类路径(如 com.xxxx.resources.AppMsg) id 否 Object/S tring 用来标识元素的 id。在 ui 和表单中为 HTML 的 id 属性 Include 描述:包含一个 servlet 的输出(servlet 或 jsp 的页面) 名称 必需 默认 类型 描述 value 时 String 要包含的 jsp 页面或 servlet id 否 Object/S tring 用来标识元素的 id。 在 ui 和表单中为 HTML 的 id 属性 param 描述:属性是可选的,如果提供,会调用 Component 的方法, addParameter(String,Object),如果不提供,则外层嵌套标签必须实现 UnnamedParametric 接口。 Value 的提供有两种方式,通过 value 属性或者标签中间的 text,不同之处: zhaosoft 参数会以 String 的格式放入 statck 该值会以 java.lang.Object 的格式放入 statck 名称 必需 默认 类型 描述 name 否 String 参数名 value 时 String value 表达式 id 否 Object/S tring 用来标识元素的 id。 在 ui 和表单中为 HTML 的 id 属性 set 描述:set 标签赋予变量一个特定范围内的值。当希望给一个变量赋一个复 杂的表达式,每次访问该变量而不是复杂的表达式时用到。其在两种情况下非 常有用:复杂的表达式很耗时(性能提升)或者很难理解(代码的可读性提高) 参数: 名称 必 需 默 认 类型 描述 nam e 是 String 变量名字 scop e 否 String 变量作用域,可以为 application,session,request,page,action valu e 否 Object/S tring 将会赋给变量的值 id 否 Object/S tring 用来标识元素的 id。在 ui 和表单中 为 HTML 的 id 属性 Text 描述:支持国际化信息的标签。国际化信息必须放在一个和当前 action 同 名的 resource bundle 中,如果没有找到相应 message,tag body 将被当作默认 的 message,如果没有 tag body,message 的 name 会被作为默认 message. 名称 必需 默认 类型 描述 name 是 String 资源属性的名字 id 否 Object/S tring 用来标识元素的 id。在 ui 和表单中为 HTML 的 id 属性 url 描述:该标签用于创建 url,可以通过”param”标签提供 request 参数。 当 includeParams 的值是 all 或 get,param 标签中定义的参数将有优先权, 也就是说其会覆盖其他同名参数的值。 UI 标志 单行文本框 Textfield 标签输出一个 HTML 单行文本输入控件,等价于 HTML 代码 名称 必需 默认 类型 描述 maxle ngth 否 无 Integer 文本输入控件可以输入字符 的最大长度 reado nly 否 false Boolean 当该属性为 true 时,不能 输入 size 否 无 Integer 指定可视尺寸 id 否 Object/S tring 用来标识元素的 id。在 ui 和表单中为 HTML 的 id 属性 例子: 文本框区 Textarea 标签输出一个 HTML 多行文本输入控件,等价于 HTML 代码: 名称 必需 默认 类型 描述 cols 否 无 Integer 列数 rows 否 无 Integer 行数 reado nly 否 false Boolean 当该属性为 true 时,不能 输入 wrap 否 false Boolean 指定多行文本输入控件是否 应该换行 id 否 Object/S tring 用来标识元素的 id。在 ui 和表单中为 HTML 的 id 属性 例子: 下拉列表 s:select 标签输出一个下拉列表框,相当于 HTML 代码中的 名称 必需 默认 类型 描述 list 是 无 Cellecti on Map Enumeration Iterator array 要迭代的集合,使用集合 中的元素来设置各个选项,如 果 list 的属性为 Map 则 Map 的 key 成为选项的 value,Map 的 value 会成为选项的内容 listKey 否 无 String 指定集合对象中的哪个属 性作为选项的 value listValu e 否 无 String 指定集合对象中的哪个属 性作为选项的内容 header Key 否 无 String 设置当用户选择了 header 选项时,提交的的 value,如果 使用该属性,不能为该属性设 置 空值 header Value 否 无 String 显示在页面中 header 选项 内容 emptyO ption 否 false Boolean 是否在 header 选项后面添 加一个空选项 multiple 否 false Boolean 是否多选 size 否 无 Integer 显示的选项个数 例子: 使用 name 和 list 属性,list 属性的值是一个列表 使用 name 和 list 属性,list 属性的值是一个 Map 使用 headerKey 和 headerValue 属性设置 header 选项 使用 emptyOption 属性在 header 选项后添加一个空的选项 使用 multiple 属性设置多选 使用 size 属性设置下拉框可显示的选项个数 使用 listKey 和 listValue 属性,利用 Action 实例的属性( property) 来设置选项的值和选项的内容 doubleselect 标签 doubleselect 标签输出关联的两个 HTML 列表框,产生联动效果。 名称 必需 默认 类型 描述 list 是 无 Cellecti on Map Enumeration Iterator array 要迭代的集合,使用集 合中的元素来设置各个选项, 如果 list 的属性为 Map 则 Map 的 key 成为选项的 value,Map 的 value 会成为 选项的内容 listKey 否 无 String 指定集合对象中的哪个 属性作为选项的 value,该选 项只对第一个列表框起作用 listValue 否 无 String 指定集合对象中的哪个 属性作为选项的内容,该选 项只对第一个列表框起作用 headerKey 否 无 String 设置当用户选择了 header 选项时,提交的的 value,如果使用该属性,不 能为该属性设置空值 headerValu e 否 无 String 显示在页面中 header 选 项内容 emptyOptio n 否 false Boolean multiple 否 false Boolean 是否多选 size 否 无 Integer 显示的选项个数,该选 项只对第一个列表框起作用 doubleId 否 无 String 指定第二个列表框的 ID doubleList 是 无 Cellecti on Map Enumeration Iterator array 要迭代的集合 doubleList Key 否 无 String 指定集合对象中的哪个 属性作为选项的 value,该选 项只对第二个列表框起作用 doubleList Value 否 无 String 指定集合对象中的哪个 属性作为选项的内容,该选 项只对第二个列表框起作用 doubleSize 否 无 Integer 选项个数 doubleNam e 否 无 String 指定第二个列表框的 name 映射 doubleValu e 否 无 Object 第二个列表框的初始选 种项 实例: 复选框 名称 必需 默认 类型 描述 fieldVa lue 是 true String 指定在复选框选中时,实际 提交的值 复选框组,对应 Action 中的集合 名称 必需 默认 类型 描述 list 是 无 Cellecti on Map Enumeration Iterator array 要迭代的集合,使用集合中 的元素来设置各个选项,如果 list 的属性为 Map 则 Map 的 key 成为选项的 value,Map 的 value 会成为选项的内容 listKey 否 无 String 指定集合对象中的哪个属性 作为选项的 value listVal 否 无 String 指定集合对象中的哪个属性 ue 作为选项的内容 例子:checkboxlistTag.jsp 文件选择组建 file 标签输出一个 HTML 文件选择框。 名称 必需 默认 类型 描述 accept 否 input String HTML accept 属性,指出接 受文件的 MIME 类型 按钮 Submit 标签输出一个按钮, submit 标签和 form 标签使用可以提供异步表 单提交功能。Submit 标签可以输出以下三种类型的提交按钮: Input: 等价于 HTML 代码 Image: 等价于 HTML 代码 Button: 名称 必需 默认 类型 描述 type 否 input String 要使用的提交按钮的类型, 有效值:input button image src 否 无 String 为 image 类型的提交按钮设 置图片地址。该属性对 input 和 button 类型的提交按钮无效 action 否 无 String 指定处理提交请求的 action metho d 否 无 String 指定处理提交请求的 action 的方法 实例 实例 1. 页面输出: 实例 2. 页面输出: 登陆 Struts2 预定义的前缀: 1。method method:login 使用 method 前缀,来取代 action 默认的 execute()方法的执行。 注意:1。input 类型的按钮,不能用 label 设置按钮上的文本,只能用 value 2、action 前缀 使用 action 前缀,取代 form 标签指定的 action,导向到另一个 action 进 行处理。 2、redirect 前缀 使用 redirect 前缀请求重定向到其他的 url,甚至可以是 web 英语程序外部 的 url。 2、redirect-action 前缀 使用 redirect-action 前缀请求重定向到其他的 action. reset 标签 reset 标签输出一个重置按钮 名称 必需 默认 类型 描述 type 否 input String 要使用的重置按钮的内容, input、button updownselect 标签 updownselect 标签创建一个带有上下移动的按钮的列表框,可以通过上下 移动按钮来调整列表框的选项的位置。 名称 必需 默认 类型 描述 list 是 无 Cellecti on Map Enumeration Iterator array 要迭代的集合,使用集 合中的元素来设置各个选项, 如果 list 的属性为 Map 则 Map 的 key 成为选项的 value,Map 的 value 会成为 选项的内容 listKey 否 无 String 指定集合对象中的哪个 属性作为选项的 value listValue 否 无 String 指定集合对象中的哪个 属性作为选项的内容 headerKey 否 无 String 设置当用户选择了 header 选项时,提交的的 value,如果使用该属性,不 能为该属性设置空值 headerValu e 否 无 String 显示在页面中 header 选项内容 emptyOptio n 否 false Boolean 是否在 header 选项后 面添加一个空选项 multiple 否 false Boolean 是否多选 size 否 无 Integer 显示的选项个数 moveUplab el 否 String 设置向上移动按钮上的 文本 moveDown Label 否 String 设置向下移动按钮上的 文本 selectAllLab el 否 String 设置向全部选择按钮上 的文本 allowMoveU p 否 无 Boolean 设置是否使用向上移动 按钮 allowMoveD own 否 无 Boolean 设置是否使用向下移动 按钮 allowSelect All 否 无 Boolean 设置是否使用全部选择 按钮 实例: package com.zhaosoft.ui.formtag; public class BookService public Book getBooks() return new Book new Book(“Spring2.0 宝典“,“zhaosoft“), new Book(“轻量级 J2EE 企业应用实战“,“zhaosoft“), new Book(“基于 J2EE 的 Ajax 宝典“,“zhaosoft“) ; optiontransferselect 标签 optiontransferselect 标签创建一个选项转移列表组建,它由两个 标签以及它们之间的用于将选项在两个之间相互移动的按钮组成。表 单提交时,将提交两个列表框中选中的选项。 名称 必 需 默 认 类型 描述 list 是 无 Cellecti on Map Enumeration Iterator array 要迭代的集合,使用 集合中的元素来设置各个 选项,如果 list 的属性为 Map 则 Map 的 key 成为 选项的 value,Map 的 value 会成为选项的内容, 该选项只对第一个列表框 起作用 listKey 否 无 String 指定集合对象中的哪 个属性作为选项的 value,该选项只对第一 个列表框起作用 listValue 否 无 String 指定集合对象中的哪 个属性作为选项的内容, 该选项只对第一个列表框 起作用 headerKey 否 无 String 设置当用户选择了 header 选项时,提交的 的 value,如果使用该属 性,不能为该属性设置空 值 headerValue 否 无 String 显示在页面中 header 选项内容 multiple 否 fals e Boolean 是否多选 size 否 无 Integer 显示的选项个数,该 选项只对第一个列表框起 作用 doubleId 否 无 String 指定第二个列表框的 ID doubleList 是 无 Cellecti on Map Enumeration Iterator array 要迭代的集合,使用 集合中的元素来设置各个 选项,如果 doubleList 的 属性为 Map 则 Map 的 key 成为选项的 value,Map 的 value 会 成为选项的内容,该选项 只对第二个列表框起作用 doubleListKey 否 无 String 指定集合对象中的哪 个属性作为选项的 value,该选项只对第二 个列表框起作用 doubleListValue 否 无 String 指定集合对象中的哪 个属性作为选项的内容, 该选项只对第二个列表框 起作用 doubleHeaderKe y 否 无 String 设置当用户选择了 header 选项时,提交的 的 value,如果使用该属 性,不能为该属性设置空 值 doubleHeaderVal e 否 无 String 显示在页面中 header 选项内容 doubleEmptyOpti on 否 无 String 是否在第二列表框的 header 后面添加一个空 选项 doubleMultiple 否 true Boolean 是否多选 doubleSize 否 无 Integer 选项个数 doubleName 否 无 String 指定第二个列表框的 name 映射 doubleValue 否 无 Object 第二个列表框的初始 选种项 leftTitle 否 无 String 左边列表框的标题 rightTitle 否 - 引用 注水豆芽 的 struts2 标签库(1) 原作 : /struts2/archive/2007/08/03/1724395.aspx Struts2 Taglib 抽象了不同表示技术,现在 Struts2 主要支持三种表示技术: JSP,FreeMarker 和 Velocity。但部分的 Tag 在三种表示技术下都可以使用,但 是也有部分只能在某一种情况下使用。 Tab 可以分为两类:通用标签和 UI 标签。 4.1 节 通用标签 通用标签用来在页面表示的时候控制代码执行的过程,这些标签也允许从 Action 或者值堆栈中取得数据。例如地域,JavaBeans,URLs,和 action。 控制标签控制程序执行,例如:if,else,iterator 数据标签管理数据的取得和创建,例如:bean,push,i18n 控制标签 if 标签 描述 If 标签用来控制基本的条件处理流程,通常和 else 标签或者 elseif 标签连 用。 参数 名字 是否必须 默认值 可否使用表达 式 类型 描述 id 否 是 String 用来表示该元素,对于 UI 和 Form 标签来说直 接转变为 HTML id 属性 test 是 是 Boolea n 用来决定是否显示标签 内部内容的表达式 例子 Will Not Be Executed Will Be Executed Will Not Be Executed elseIf 标签 参考 if 标签 else 标签 参考 if 标签 append 标签 描述 用来做 iterator 标签的辅助,将不同 iterator 中的内容合在一个 iterator 中。 参数 名字 是否必须 默认值 可否使用表达 式 类型 描述 id 否 是 String 用来保存结果 iterator 的对象在 value contex t 中的名字。 例子 Action 类 public class AppendIteratorTagAction extends ActionSupport private List myList1; private List myList2; private List myList3; public String execute() throws Exception myList1 = new ArrayList(); myList1.add(“1“); myList1.add(“2“); myList1.add(“3“); myList2 = new ArrayList(); myList2.add(“a“); myList2.add(“b“); myList2.add(“c“); myList3 = new ArrayList(); myList3.add(“A“); myList3.add(“B“); myList3.add(“C“); return “done“; public List getMyList1() return myList1; public List getMyList2() return myList2; public List getMyList3() return myList3; 标签使用 generator 标签(JSP Tag) 描述 从 val 属性生成一个 iterator。 参数 例子 例 1: 生成一个简单的 iterator,并且使用 iterator 标签打印出内容。 例 2: 生成一个 iterator,使用 count 属性。因为 count 属性值为 3,所以只有前三 个内容(aaa,bbb,ccc)在生成的 iterator 中。 Generate an iterator with count attribute 例 3: 生成 iterator,使用了 id 属性,之后生成的对象放在 pageContext 中,可以 通过指定的 id 来访问。 例 4: 生成 iterator,使用 converter 属性,这里的 convertor 仅仅将每一个对象添 加了一个“converter-“前缀。 public class GeneratorTagAction extends ActionSupport public Converter getMyConverter() return new Converter() public Object convert(String value) throws Exception return “converter-“+value; ; . iterator 标签 描述 迭代处理一个 java.util.Connection 或者 java.util.Iterator 对象 参数 名字 是否必须 默认值 可否使用表达 式 类型 描述 id 否 是 String Id, stat us 否 否 是 Boolea n 如果指定,在循环的过 程中会保留一个 Iterat orStatus 类型的变量, 该变量用来查询当前迭 代的状态 valu e 否 是 String 被迭代的对象 例子 例 1: day is: 例 2: Days of the week 例 3: oddeven“ , merge 标签(同 append?) 描述 参数 例子 sort 标签(JSP-Tag) 描述 对一个可以迭代的对象进行排序操作。 参数 名字 是否必 须 默认 值 可否使用 表达式 类型 描述 Comparat or 是 是 java.util.Compar ator 排序用的比较器 Source 否 是 String 排序对象 例子 例 1: 例 2: subset 描述 递归 iterator 的一部分 参数 名字 是否必 须 默认 值 可否使用 表达式 类型 描述 count False 是 Integer Iterator 中被递 归的一部分的 it em 的数量 Decider 否 是 org.apache.strut s2.util. SubsetIteratorFi lter.Decider 用来判断 iterat or 中的 item 是 否包含在最终的 subset 内部 Source 否 是 String Iterator 的对象 Start 否 是 Integer 开始位置 例子 Java 类 public class MySubsetTagAction extends ActionSupport public String execute() throws Exception l = new ArrayList(); l.add(new Integer(1); l.add(new Integer(2); l.add(new Integer(3); l.add(new Integer(4); l.add(new Integer(5); return “done“; public Integer getMyArray() return a; public List getMyList() return l; public Decider getMyDecider() return new Decider() public boolean decide(Object element) throws Exception int i = (Integer)element).intValue(); return (i % 2) = 0)?true:false); ; 数据标签 TODO 完成如下数据标签 数据标签包括 a action bean date debug i18n include param push set text url property 4.2 节 UI 标签 UI 标签主要是指 Form 相关的标签,UI 标签又分为两部分:form 标签和构成 form 内部字段的其他标签。 每一个 UI 标签都是基于模板的,即:每一个标签都有一个对应的模板用来生成 UI 标签的样式,详细内容参看模板节。 所有的 UI 标签都有着共通的祖先 UIBean,UIBean 提供了这些 UI 标签的一系列 共通的属性,这些属性可以分为三类:模版相关的属性,JavaScript 相关的属 性和其他通用属性。 模版相关属性: 属性 主题 数据类型 说明 templateDi r n/a String 定义模版目录 theme n/a String 定义主题的名字 template n/a String 定义模版名字 JavaScript 相关属性: 属性 主题 数据类型 说明 onclick simple String html javascript onclick 属性 ondbclick simple String html javascript ondbclick 属性 onmousedow n simple String html javascript onmousedown 属性 onmouseup simple String html javascript onmouseup 属性 onmouseove r simple String html javascript onmouseover 属性 onmouseout simple String html javascript onmouseout 属性 onfocus simple String html javascript onfocus 属性 onblur simple String html javascript onblur 属性 onkeypress simple String html javascript onkeypress 属性 onkeyup simple String html javascript onkeyup 属性 onkeydown simple String html javascript onkeydown 属性 onselect simple String html javascript onselect 属性 onchange simple String html javascript onchange 属性 Tooltip 相关属性: 属性 数据类 型 默认值 说明 tooltip String none 为指定的组件设置 Tooltip jsTooltipEnab led String false 使用 js 表示 tooltip tooltipIcon String /struts/ static/t ooltip/t ooltip.g if 指向 tooltip 图表的 URL tooltipDelay String 500 多长时间后显示 Tooltip key simple String 这个输入字段对应的属性,用来自动设置 name,label 和 value 通用属性: 属性 主题 数据类型 说明 cssClass simple String 定义 html class 属性 cssStyle simple String 定义 html style 属性 title simple String 定义 html title 属性 disabled simple String 定义 html disabled 属性 label xhtml String 定义 form 字段的标签 labelPosition xhtml String 定义标签在 Form 中的位置,从左从上计 算 requiredPosit ion xhtml String 定义必须的标签在 Form 中的位置,从左 从上计算 name simple String 定义 form 字段的 name 映射 required xhtml Boolean 在 label 上添加一个* tabIndex simple String 定义 html tabIndex 属性 value simple Object 定义 form 字段的值 对于 name 和 value 的说明: name 用来说明 Form 字段的名字,和 Action 类的属性对应。 value 用来记录 Form 字段的值,和 Action 类中属性的值对应。 所以在修改一个字段的内容的时候应该使用如下的标签: . 但是,由于 name 和 value 的关系,struts2 标准标签可以自动对应,所以也可 以使用如下标签: . UI 标签说明: Form 部分 autocompleter checkbox checkboxlist combobox datetimepicker doubleselect head file form hidden label optiontransferselect optgroup password radio reset select submit textarea textfield token updownselect 非 Form 部分: actionerror actionmessage component div fielderror table tabbedPanel tree treenode 4.3 节 主题和模板 概念说明: 标签(tag):一小段代码,在 JSP,Velocity 或者 FreeMarker 中执行。程序 开发的最小单位,用来生成 HTML 对应的元素。 模板(template):一些代码,通常使用 FreeMarker 写成,可以被某些 Tag 表 示出来(通常是 UI Tag)。 主题(theme):一组模板打包在一起,提供通用功能的模版 主题和模板主要针对可视化的标签(Tag)而言,使用以下例子来说明三者之间 的关系。 假如我们要开发如下的一个画面: 我们使用如下的代码: 这里,每一个都是一个标签(tag)。 我们在看看这些标签在一起生成的 HTML 源代码: Name: Password: 在由标签生成 HTML 代码的时候,例如: 生成的代码为: Name: 我们可以看到,标签提供的有效信息只有 Name 和 name,而 其余的部分,例如, ,等代码都根据一个固定的模板文件 生成,这个模板文件为: 标签使我们开发 JSP 画面的时候使用的最小组件单元,我们根据客户的需要组 合各种 Tag 达到客户的需求。模板是生成这些 Tag 时候使用的,使用模板可以 定义 Tag 的基本形式,在使用 tag 的时候,我们只需要指定该 Tag 的不同属性, 即可根据 Tag 指定的特殊属性,结合模板的基本属性生成可视化的 HTML 元素。 主题是不同 tag 结合在一起而形成的。 name=“$?default(“)?html“ size=“$parameters.get(“size“)?html“ maxlength=“$parameters.maxlength?html“ value=“ disabled=“disabled“ readonly=“readonly“ tabindex=“$parameters.tabindex?html“ id=“$parameters.id?html“ class=“$parameters.cssClass?html“ style=“$parameters.cssStyle?html“ title=“$parameters.title?html“ / 我们考虑标签(Tag)使用模板(Template)生成 HTML 的过程,根据不同的模 板,坑顶可以生成不同的 HTML 画面,这样我们可以把不同 tag 的,视觉效果一 致的模板放在一起: 例如: TemplateForm_A, TemplateForm_B TemplateTextField_A, TemplateTextField_B TemplatePassword_A, TemplatePassword_B , TemplateSubmit_A, TemplateSubmit_B TemplateReset_A, TemplateReset_B 这样将_A 的模板放在一起叫做 A 主题(Theme),将_B 的模板放在一起叫 B 主 题。这样我们在分别使用 A 主题,B 主题的时候可以得到同一个 Tag 的不同的 视觉效果。 模版和主题的概念处在 Struts Tag 的核心位置。 Struts2 默认提供了四种主题: Simple 主题:最简单的主题 XHTML 主题:默认主题,使用常用的 HTML 技巧 CSS XHTML 主题: 使用 CSS 实现的 XHTML 主题 AJAX 主题:基于 XHTML 主题,但是同工了 AJAX 功能 相关配置: struts.ui.theme=xhtml struts.ui.templateDir=template struts.ui.templateSuffix=ftl struts.ui.theme 的值表示的是使用哪个主题,可选项位: xhtml,simple,css_html,ajax 其中 xhtml 为默认值。 struts.ui.templateDir 的值表示模板的存放目录。 struts.ui.templateSuffix 的值表示模板文件明的后缀,因为 Struts2 默 认使用 FreeMarker 来编写模板,所以这里我们基本使用 ftl。 另外也可以使 用 vm(Velocity)和 jsp(Java Server Page),但是所有的 Template 和 Theme 要我们自己开发。 关于模板文件的存放目录我们需要详细说明,如上述说明,模板文件的存 放位置位 template,那么系统在那里寻找 template 目录呢, 首先,在 web 应用程序中查找,如果应用程序中存在一个叫做 template 的 目录(跟 WEB-INF 目录平级),那么所有的文件从这个目录中取得,具体的路 径还要加上主题的名字。 然后,如果在 web 应用程序中没有找到 template 目录,那么 struts2 会在 classpath 中寻找,由于 struts2-core-2.0.9.jar 文件中存在 template 目录, 其中内置了四种主题,所以会使用这里变的模板。 例如: 如果我们使用了 ajax 主题,那么会在如下位置超找的主题 应用程序 /template/ajax/textfield.ft l classpath /template/ajax/textfield.ft l 修改或者扩展模板: 有些时候 Struts 提供的模板不一定能够满足我们的需求,这时候我们需要修改 或者扩展现有模板。重新做新的模板是不明智的,如果是在需要全新的模板, 可以考虑基于 simple 扩展。 修改: 根据模板的装载机制,可以考虑将模板从 struts2-core-2.0.9.jar 文件中解压 缩到 web 项目目录,之后修改对应的文件。 包装: XHTML 提供了一个很好的例子,simple 主题提供了基本的功能,XHTML 将它包 括起来,例如: 以下是 template/xhtml/xxx.ftl(xxx 表示模板名字)文件内容: 扩展(extend): 使用棉线对象的特性可以扩展一个主题,扩展一个主题的时候不需要实现所有 的模板,只需要实现需要变化的标签。 扩展需要在目录中新建一个叫做 perties 的文件,这个文件只有一行, 表明了继承而来的主题的名字,例如: /template/ajax/perties 文件内容为: parent = xhtml 4.4 节 AJAX 标签(试验阶段) Struts2 内置了 Dojo 0.4 来提供对 Ajax 的支持。 想要使用 AJAX 标签需要做到两点: 1 使用 Ajax 主题 2 在 JSP 画面中使用了 head 标签配置 Ajax 属性 AJAX 标签主要有: AJAX 标签的一些通用属性: 属性 说明 类型 href 请求使用的 URL String listenTopic 使用逗号分割的一组主题列表,这个 列表中的主题会导致这个 Tag 自己内容 (Div,Autocompleter)重新装载或者执 行一个 Action(Anchor,Submit ) String notifyTopic 使用逗号分割的一组主题列表,向这 个列表中的主题发布一些信息,例如: data,type,request,参看每个标签的详 细说明 String showErrorTransport Text 设置是否显示错误消息(默认显示) Boolea n indicator 请求过程中显示的对象,通常位 ProgressBar 等 String Indicator Topic 监听一个 Topic: dojo.event.topic.subscribe(“/refresh“, function(param1, param2) /this function will be called everytime “/refresh“ is published ); 向一个 Topic 发布内容: dojo.event.topic.publish(“/refresh“, “foo“, “bar“); URL Href 属性对应的 URL 必须使用 URL 标签定义,例如: Initial Content DIV 标签: Div 主要用来异步的显示数据, PageLoad 会出发 Div 中数据的显示,除非 把 AutoStart 设置为 False。 另外,Div 的数据显示可以使用 Topic 来触发。使用 listenTopic 来定义 触发器。 例如: 每次想/refresh0,/refresh1 发布内容的时候,上面代码定义的 div 都会 刷新。 使用 updateFreq 可以让 Div 周期性的触发,在 autoStart 设置位 true 的 情况下,可以使用 delay 来延迟首次画面加载的出发时间,例如: 上述代码说明,每隔 2 秒该 div 触发内容更新一次,但是首次画面加载完 成之后 3 秒 div 出发内容更新。 todo 其他标签 4.5 节 OGNL OGNL 是 Object Graph Navigation Language 的简称,详细相关的信息可 以参考:。这里我们只涉及 Struts2 框架中对 OGNL 的基本 支持。 OGNL 是一个对象,属性的查询语言。在 OGNL 中有一个类型为 Map 的 Context(称为上下文),在这个上下文中有一个根元素(root),对根元素的 属性的访问可以直接使用属性名字,但是对于其他非根元素属性的访问必须加 上特殊符号#。 在 Struts2 中上下文为 ActionContext,根元素位 Value Stack(值堆栈, 值堆栈代表了一族对象而不是一个对象,其中 Action 类的实例也属于值堆栈的 一个)。ActionContext 中的内容如下图: | |-application | |-session context map-| |-value stack(root) | |-request | |-parameters | |-attr (searches page, request, session, then application scopes) | 因为 Action 实例被放在 Value Stack 中,而 Value Stack 又是根元素 (root)中的一个,所以对 Action 中的属性的访问可以不使用标记#,而对其 他的访问都必须使用#标记。 引用 Action 的属性 ActionContext 中的其他非根(root)元素的属性可以按照如下的方式访 问: or or Action 类可以使用 ActionContext 中的静态方法来访问 ActionContext。 ActionContext.getContext().getSession().put(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2026学年地质版(2024)小学体育与健康二年级全一册《安全游泳防溺水》教学设计
- 2025合作伙伴项目合作合同
- 小矮人讲解题目及答案
- 常德消防素质考试题库及答案
- 消防安全常识题目及答案
- 现象及原理分析题目答案
- 2025知识产权许可与转让合同
- 沧州高中地理会考试卷及答案
- 沧州地理生物考试卷子及答案
- 2025涂料采购合同范本
- 2025年政工师考试试题及参考答案
- 2025年检验检测人员理论考试试题及答案
- 2025-2030奢侈品礼品包装消费行为与品牌战略分析报告
- (2025年标准)个人转款协议书
- 2025年电力交易员(高级工)考试复习题库(含答案)
- 区域检验信息管理系统规划书
- 冷库安全基本知识培训课件
- 澄海玩具行业出口中存在的问题及对策分析
- 工业园区集中供热配套建设项目可行性研究报告
- 2025年应急管理普法知识竞赛题(附答案)
- 2024-2030全球飞机拆解再制造行业调研及趋势分析报告
评论
0/150
提交评论