tag for - jmr-source/doc GitHub Wiki
<for>
循环遍历
得到集合变量,遍历集合。 从作用域context或者session中得到集合变量, 可使用Ognl表达式得到变量的集合,或者自定义ognl类型集合变量
value(必须) 得到循环的集合,也可以得到变量相关的Ognl集合
valueScope(可选) 变量的作用域 属性 context:从context中得到变量(默认) session:从session中得到变量
var(必须) 存储集合的遍历对象
status(可选) 设置变量,存储循环信息 符号 描述 count 循环总次数 index 当前循环索引 isFirst 当前循环是否为头索引 isLast 当前循环是否为尾索引
trim(可选) 是否保留输出值的前后空白字符 属性 false:保留输出值的前后空白字符(默认) true:删除输出值的前后空格(包括换行符)
delimiter(可选) 循环输出之间的分隔符
test(可选) 使用Ognl判断条件,判断结果是true,则运行当前循环,false则不运行 符号 ==:等于 !=:不等于 &&:与 ||:或
duplicate(可选) 是否输出重复内容 属性 true:已经有的重复内容仍然输出(默认) false:已经有的重复内容不再输出
###例子位置:###
- demo/tag/tag.jmr.xml 任务中的 common/for/for
从value中得到集合并设置到var中,<set>的value的用法同<get>的value,
能够从context,session中取值,var中为每次循环的元素。
设置一个list,循环输出它的元素。
结果
小贴士:对于循环的元素,把鼠标放在上面,或者选中,可以提示出每个循环的元素和Ognl值。
设置一个Map,每个元素都会有key和value这2个属性。
结果
符号 描述 count 循环总次数 index 当前循环索引 isFirst 当前循环是否为头索引 isLast 当前循环是否为尾索引
以下设置status变量s,输出它循环的信息。
结果
可以设置test,输入Ognl表达式,表达式返回的是true,则执行当次循环,如果返回的是false,则跳出这次循环进入下次循环。
我们初始化一个List,它放进了3个Book对象, Book对象包含int id, String name, Double price三个属性。
把模板中的action指向ForTagAction
当price大于50时,才输出循环。
结果,只输出price大于50的元素
小贴士:循环的元素,可以查看它的Ognl属性。
trim是判断是否保留输出值的前后空白字符,默认false,也就是说原样输出所有字符。
以下2个输出方式,一种默认trim="false",另一种trim="true"。
可以看出,第一种方式原样输出,包括前后的空格和换行符,另一种去除了空格和换行符。
delimiter循环输出之间的分隔符,如果指定了分隔符,则输出元素间只按分隔符分割,而不在按原来的格式。
设置方法的参数类型和参数名,参数间用“,”分隔
结果
有些时候,循环输出的内容可能是一样的,如果不想重复输出相同内容,可以设置duplicate="false",则不会重复输出相同内容。默认duplicate="true"。
对于import的内容,没有必要重复输出。
duplicate默认为true,设置成false和true的区别。