-
Notifications
You must be signed in to change notification settings - Fork 30
feilong isContains
feilong edited this page May 22, 2020
·
1 revision
判断一个值,是否在一个集合(或者可以被转成Iterator)当中
自定义标签参数说明:( feilong:isContains)
参数 | 说明 | 是否必须required | 默认 | 是否支持动态参数 |
---|---|---|---|---|
collection | 一个集合,将会被转成Iterator,可以为逗号隔开的字符串,会被分隔成Iterator | true | 无 | true |
value | 任意类型的值,最终toString 判断比较 | true | 无 | true |
示例:
<%@ taglib prefix="feilong" uri="http://java.feilong.com/tags-common"%>
场景描述: 循环输出100个商品,每个商品 如果是限量款,那么显示"限量发售"(不想在command 里面加标识字段)
如果 这个商品被贴了限量款标签,那么显示 "限量发售"
使用c标签代码:
<c:set var="isLimited" value="false" />
<c:forEach items="${pagination.items }" var="skuFromSolrCommand">
.....
<c:set var="isLimited" value="false" /><!--每次循环生成标识-->
<c:forEach items="${skuFromSolrCommand.labels }" var="label">
<c:if test="${label eq 'limited' }">
<c:set var="isLimited" value="true" /><!--标识复原-->
<div class="icon_limitsale">
<em>限量发售</em>
</div>
</c:if>
</c:forEach>
.......
</c:forEach>
换成使用feilong:isContains 标签代码
<feilong:isContains collection="${skuFromSolrCommand.labels }" value="limited" >
<div class="icon_limitsale">
<em>限量发售</em>
</div>
</feilong:isContains>
可以看出来,使用feilong:isContains 代码比较简洁易懂
collection参数 ,会被转成 Iterator,
支持
- 数组,
- Collection,
- Map (自动取 map 的values来迭代),
- Enumeration,
- Dictionary,
- Iterator,
- 逗号分隔的String
再循环 Iterator, 每个值toString 和 传入的 value.toString() 判断
如果有相等,则立即返回true 否则返回false
如果 collection参数为null,则返回false
core