struts2控制标签_第1页
struts2控制标签_第2页
struts2控制标签_第3页
struts2控制标签_第4页
struts2控制标签_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

文章内容来自 Java 私塾 2013 12 27 更多内容在 java 私塾官网 struts2 控制标签 8 3 控制标签控制标签 控制标签关注程序的运行流程 比如用 if else 来进行分支控制 用 iterator 来进行循环控制 接 下来就来学习 Struts2 的控制标签 8 3 1 if elseif与与else标签标签 1 if 标签的功能 标签的功能 类似于 Java 程序中的 if 用来表达分支判断 else 标签的功能 标签的功能 类似于 Java 程序中的 else elseif 标签的功能 标签的功能 类似于 Java 程序中的 else if 2 属性 属性 if 标签和 elseif 标签都只有一个 test 属性 它本身是一个 OGNL 表达式 运算结果为一个 boolean 值 表示是否符合条件 必须设置 else 标签没有属性 3 示例 示例 由于大家对于 Java 中的 if else 是非常熟悉的 因此这里只需要看看 用标签如何来表达即 可 示例如下 java 代码 代码 查看复制到剪贴板打印 1 2 6 20 7 您输入的值大于等于 20 8 9 s elseif test request len 10 您输入的值小于等于 10 11 12 13 您输入的值在 10 与 20 之间 14 8 3 2 iterator标签标签 1 功能 功能 iterator 标签用来处理循环 可以用它遍历数组 Set 和 List 等集合对象 这个标签还支持在 ActionContext 中保持一个保存遍历状态的对象 通过这个变量可以得到当前循环的各种信息 文章内容来自 Java 私塾 2013 12 27 更多内容在 java 私塾官网 iterator 标签在遍历一组对象的时候 它把正在循环的对象放在值栈的栈顶 所以可以直接引 用这个对象的方法或属性 后面给出示例 2 属性 属性 iterator 标签的主要属性 value 用来指明到底循环的是谁 这个属性的值是 OGNL 表达式 用来访问 ActionContext 和值栈中需 要被循环的对象 status 这个属性在 ActionContext 中保存一个对象 用来返回当前循环的各种信息 可以返回的信息有 l count 集合含有多少个对象 l index 正在循环的这一项的索引 l even 当前遍历到的对象是不是处于列表的偶数索引位置 l odd 当前遍历到的对象是不是处于列表的奇数索引位置 l first 正在循环的是不是第一个 l last 正在循环的是不是最后一个 begin end step 指明了如果使用索引来进行循环时的开始 结束和步长 var 变量名称 用来引用存放到值栈的被循环的对象 3 示例 示例 其实在 Java 中处理循环的时候 主要用的是 for 循环和 while 循环 do while 循环的应用 相对少一些 接下来用 iterator 标签来实现类似于 Java 中循环的功能 1 实现类似于 for 循环的功能 假如现在要求完全使用标签 来实现循环输出 1 到 10 的值 该如何实现呢 很明显 使用 iterator 标签的 begin end step 和 var 属性就可以了 示例代码如下 java 代码 代码 查看复制到剪贴板打印 1 2 3 4 上面的实现很类似于如下的 Java 代码 java 代码 代码 查看复制到剪贴板打印 1 2 for int i 1 i 有朋友可能会说 文章内容来自 Java 私塾 2013 12 27 更多内容在 java 私塾官网 2 实现类似于 while 循环的功能 假如要循环输出一个 List 的值 那么就需要使用到 var 和 value 属性了 示例如下 java 代码 代码 查看复制到剪贴板打印 1 2 3 4 准备点循环用的数据 5 List list new ArrayList 6 for int i 1 i 11 12 13 上面的实现很类似于如下的 Java 代码 java 代码 代码 查看复制到剪贴板打印 1 3 访问复杂的对象 如果 List 里面放的是复杂对象呢 比如前面用过的 UserModel 里面有两个属性 userId name 页面上该如何循环显示呢 示例代码如下 文章内容来自 Java 私塾 2013 12 27 更多内容在 java 私塾官网 java 代码 代码 查看复制到剪贴板打印 1 2 3 4 5 准备需要循环的数据 6 List list new ArrayList 7 UserModel um1 new UserModel 8 um1 setUserId userId1 9 um1 setName 张三 10 list add um1 11 12 UserModel um2 new UserModel 13 um2 setUserId userId2 14 um2 setName 李四 15 list add um2 16 17 request setAttribute users list 18 19 20 21 userId 22 name 23 分析一下上面的代码 iterator 标签的 value 属性指明了要循环谁 里面的 OGNL 表达式 request users 表明了要访问 request 的属性中名称为 users 的属性的值 接下来 iterator 标签在循环的时候 把当前正在循环的对象放到值栈的栈顶 比如循环第一次的时 候 它就会把 List 中的第一个对象放到值栈的栈顶 这时候 访问这个对象的 getName 方法 就 可以直接用简单的 name 就可以了 4 使用 status 属性 如果还想输出当前循环的索引 或者是想要把循环输出的数据用表格来展示 并按照奇数行和 偶数行来设置不同的背景色 也就是我们熟悉的波浪纹或者是斑马纹背景 该如何实现呢 这当然需要使用 iterator 标签的 status 属性 把一个保存循环状态的对象放到 ActionContext 中 然后在 iterator 标签内的 property 标签中 就可以引用这个保存循环状态的对象了 先来示例输 出当前循环的索引 示例如下 java 代码 代码 查看复制到剪贴板打印 1 文章内容来自 Java 私塾 2013 12 27 更多内容在 java 私塾官网 2 索引 3 userId 4 name 5 注意 引用 status 属性名称的时候前面要加 号 status 这个对象可以使用的属性 在前面的属性列表中写明了 state index 就表示在循环内引用循环状态信息中的索引 每次循环 完一个对象 state 的内部状态都会相应变化 如果要实现波浪纹或斑马纹背景的表格 该如何实现呢 首先需要多添加点数据 才好看出效果 其次把循环的数据放置到表格中去 然后通过循环的状态 对象来判断是奇数行还是偶数行 为这些行设置不同的背景颜色就可以了 示例代码如下 java 代码 代码 查看复制到剪贴板打印 1 2 3 4 5 6 准备需要循环的数据 7 List list new ArrayList 8 UserModel um1 new UserModel 9 um1 setUserId userId1 10 um1 setName 张三 11 list add um1 12 13 UserModel um2 new UserModel 14 um2 setUserId userId2 15 um2 setName 李四 16 list add um2 17 18 UserModel um3 new UserModel 19 um3 setUserId userId3 20 um3 setName 王五 21 list add um3 22 23 UserModel um4 new UserModel 24 um4 setUserId userId4 25 um4 setName 马六 26 list add um4 27 28 request setAttribute users list 29 文章内容来自 Java 私塾 2013 12 27 更多内容在 java 私塾官网 30 31 32 用户列表 33 34 35 索引 36 用户编号 37 用户姓名 38 操作 39 40 41 42 tr 43 44 bgcolor EFF8FF 45 46 47 bgcolor B4CFF1 48 49 50 51 52 53 修改 删除 54 55 56 运行效果如下图 图 8 9 示例 iterator 标签 文章内容来自 Java 私塾 2013 12 27 更多内容在 java 私塾官网 是不是看起来有点做列表页面的感觉 这就对了 以后用 Struts2 开发 一定少不了使用 iterator 标签的 8 3 3 append与与param标签标签 1 功能 功能 append 标签用于把几个已经存在的集合组合成一个大集合 param 标签跟它连用 用来指 定组合哪些集合 2 属性 属性 append 标签的主要属性 var 用来指定把组合后的大集合放到值栈里的变量名称 3 示例 示例 简单的示例如下 java 代码 代码 查看复制到剪贴板打印 1 2 3 4 5 6 7 8 9 10 11 12 首先用 set 标签来指定两个集合 对于来说 var 属性 指定了这个集合被放进值栈的名字为 list1 而 value 属性的值为 1 2 3 本身是 OGNL 表达式 表示直接创建一个集合 里面有 1 2 3 三个值 然后 使用 append 标签来把 list1 和 list2 组合成一个大的集合 中 的 var 属性指定了组合后的大集合放进值栈的名字为 list3 而 param 标签的 value 属性指定了被 组合的集合 最后 用 iterator 标签来遍历并输出合并后的集合 8 3 4generator 标签标签 1 功能 功能 generator 标签用来切分字符串 并把切分的结果组成一个集合 2 属性 属性 generator 标签的主要属性 val 指定被切分的字符串 必须指定 文章内容来自 Java 私塾 2013 12 27 更多内容在 java 私塾官网 separator 指定切分字符串用的分隔符 必须指定 比如要用 来切分字符串 a b c d 最终的结果为 包含 a b c d 四个字符串的集合 count 返回集合的最大长度 converter 用于设置自定义的 Converter 必须是 org apache struts2 util IteratorGenerator Converter 接口的实现类 var 指定变量名称 用来访问放到值栈中的集合 3 示例 示例 来个简单的示例 把一个字符串分解成集合 然后循环输出 示例代码如下 java 代码 代码 查看复制到剪贴板打印 1 2 3 4 5 上面的示例中 先使用 generator 标签将 val 的值 也就是字符串 a b c d 用 separator 的值 也就是 来进行切分 把切分后的结果放入值栈 引用的名称为 var 属性的值 arr 最后用 iterator 标签输出刚刚切分创建的集合 如果把 iterator 标签嵌套在 generator 标签内 就可以不用指定 iterator 标签的 value 属性 而直接使用 generator 标签拆分字符串的结果了 java 代码 代码 查看复制到剪贴板打印 1 2 3 4 5 6 8 3 5merge 标签标签 1 功能 功能 merge 标签用来把几个已经存在的集合组合成一个大集合 与 append 标签的作用类似 只 是原来集合中出现的各个元素出现在大集合中的顺序不同 2 属性 属性 merge 标签的主要属性 var 用来指定把组合后的大集合放到值栈里的变量名称 文章内容来自 Java 私塾 2013 12 27 更多内容在 java 私塾官网 3 示例 示例 沿用前面的例子 稍稍修改一下 示例如下 java 代码 代码 查看复制到剪贴板打印 1 2 3 4 5 6 7 8 9 10 11 12 去运行测试一下 结果页面如下 图 8 10 示例 merge 标签 通过上面的示例可以看出 使用 merge 标签的时候 先出现原来各个集合中的第一个元素 然后是 原来各个集合中的第二个元素 以此类推 所以结果为 1 4 2 5 3 6 而以前在使用 append 标签的时候 原来集合中的元素出现在大集合中的顺序为第一个集合的所有 元素都出现之后 再出现第二个集合的所有元素 结果为 1 2 3 4 5 6 这就看出 merge 标签和 append 标签的区别来了 8 3 6sort 标签标签 1 功能 功能 利用设置的比较器 来对指定的集合进行排序 2 属性 属性 sort 标签的主要属性 comparator 用来指定对集合排序使用的比较器的实例 source 需要排序的集合 var 变量名称 把集合排序后的结果存放到 page context 中的 key 值 文章内容来自 Java 私塾 2013 12 27 更多内容在 java 私塾官网 3 包含基本数据类型的集合排序示例 包含基本数据类型的集合排序示例 还是通过示例来看 sort 的使用 先来示范对包含基本数据类型的集合的排序 1 先来准备比较器 就是实现 java util Comparator 接口的类 实现对整型数据进行升序排序 示例如下 java 代码 代码 查看复制到剪贴板打印 1 package cn javass tag 2 public class MyComparator implements java util Comparator 3 4 public int compare Object o1 Object o2 5 int a Integer parseInt o1 toString 6 int b Integer parseInt o2 toString 7 if a b 8 return 1 9 else if a b 10 return 1 11 12 return 0 13 14 2 在页面上直接准备集合数据 然后排序并输出 示例如下 java 代码 代码 查看复制到剪贴板打印 1 2 3 4 5 6 7 8 9 注意 在 sort 标签的 comparator 属性里面 配置的是比较器的实例 这个实例怎么得到呢 因 此在前面使用 bean 标签创建了一个比较器的实例 然后在 comparator 属性里面指定就可以了 3 运行测试一下 界面输出 3 4 5 是排好序了的 当然 你也可以修改比较器的实现 来实现其它的比较方式 比如降序排列等等 有朋友会说 这是对基本类型的处理 要是复杂对象怎么排序呢 文章内容来自 Java 私塾 2013 12 27 更多内容在 java 私塾官网 4 包含复杂数据类型的集合排序示例 包含复杂数据类型的集合排序示例 1 先来准备要排序的对象 简单点 就使用 UserModel 吧 给他添加 toString 方法 后面排 序输出的时候会用 示例如下 java 代码 代码 查看复制到剪贴板打印 1 public class UserModel 2 private String userId 3 private String name 4 public String getUserId 5 return userId 6 7 public void setUserId String userId 8 this userId userId 9 10 public String getName 11 return name 12 13 public void setName String name 14 this name name 15 16 17 public String toString 18 return userId userId name name 19 20 2 来准备比较器实现 很简单 按照用户编号来进行降序排列吧 示例如下 java 代码 代码 查看复制到剪贴板打印 1 public class MyComparator implements java util Comparator 2 3 public int compare UserModel o1 UserModel o2 4 if o1 getUserId compareTo o2 getUserId 0 5 注意是降序排列 6 return 1 7 else if o1 getUserId compareTo o2 getUserId 0 8 return 1 9 10 return 0 文章内容来自 Java 私塾 2013 12 27 更多内容在 java 私塾官网 11 12 3 在页面上直接准备集合数据 然后排序并输出 示例如下 java 代码 代码 查看复制到剪贴板打印 1 2 3 4 5 List list new ArrayList 6 7 UserModel um1 new UserModel 8 um1 setUserId user1 9 um1 setName 张三 10 list add um1 11 12 UserModel um2 new UserModel 13 um2 setUserId user2 14 um2 setName 李四 15 list add um2 16 17 UserModel um3 new UserModel 18 um3 setUserId user3 19 um3 setName 王五 20 list add um3 21 22 request setAttribute list list 23 24 25 26 27 28 29 30 31 4 运行测试一下 界面输出 userId user3 name 王五 userId user2 name 李四 userId user1 name 张三 是按照用户编号降序排好序了的 8 3 7subset 标签标签 文章内容来自 Java 私塾 2013 12 27 更多内容在 java 私塾官网 1 功能 功能 用于获取指定集合的子集合 2 属性 属性 subset 标签的主要属性 count 用于指定子集中元素的个数 decider 用于指定实现过滤条件的对象 这个对象会按照过滤条件一一检测源集合中的元素是否应该被放 到子集合中 指定过滤条件的类需要实现 org apache struts2 util SubsetIteratorFilter Decider 接口 var 变量名称 就是将子集合保存在当前页的上下文 pageContext 中所指定的 key 值 以后可以通过这 个 key 值来访问 source 用于指定源集合 start 用于指定从源集合的第几个元素开始截取 注意 0 代表第一个元素 3 示例简单截取 示例简单截取 先来个简单的示例 准备一个集合

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论