tag for - jmr-source/doc GitHub Wiki

for - 循环迭代

<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个属性。

结果

循环信息status

符号    描述
count   循环总次数
index   当前循环索引
isFirst 当前循环是否为头索引
isLast  当前循环是否为尾索引
以下设置status变量s,输出它循环的信息。

结果

Ognl表达式判断test

可以设置test,输入Ognl表达式,表达式返回的是true,则执行当次循环,如果返回的是false,则跳出这次循环进入下次循环。

我们初始化一个List,它放进了3个Book对象,
Book对象包含int id, String name, Double price三个属性。

把模板中的action指向ForTagAction

当price大于50时,才输出循环。

结果,只输出price大于50的元素

小贴士:循环的元素,可以查看它的Ognl属性。

trim使用方法

trim是判断是否保留输出值的前后空白字符,默认false,也就是说原样输出所有字符。

以下2个输出方式,一种默认trim="false",另一种trim="true"。

可以看出,第一种方式原样输出,包括前后的空格和换行符,另一种去除了空格和换行符。

delimiter使用方法

delimiter循环输出之间的分隔符,如果指定了分隔符,则输出元素间只按分隔符分割,而不在按原来的格式。

设置方法的参数类型和参数名,参数间用“,”分隔

结果

duplicate使用方法

有些时候,循环输出的内容可能是一样的,如果不想重复输出相同内容,可以设置duplicate="false",则不会重复输出相同内容。默认duplicate="true"。

对于import的内容,没有必要重复输出。

duplicate默认为true,设置成false和true的区别。

⚠️ **GitHub.com Fallback** ⚠️