慎用fn:contains,使用c:forEach替代
来源:互联网 发布:c语言流程图规范 编辑:程序博客网 时间:2024/05/22 11:53
做的功能是在jsp页面,有一个list,如果页面中的某个值与list中的值相等,就怎样怎样,如果不相等就怎样怎样
开始用的是JSTL的fn:contains函数。
没注意,测试后发现,这个函数是“包含”,而不是equals相等
假如我的list中有一个数是21,我页面中有1,21,31,那么就会把1和21都选中。因为21包含了1。而我想做的是list中是21就只处理页面上为21的那个。
于是就用c:forEach替换。
if语句替换如下:
<c:if test="${fn:contains(existedWidgetId,item.objectId)}">处理要显示的内容</c:if>${item.name }
<c:forEach var="exist" items="${existedWidgetId }" begin="0" end="${fn:length(existedWidgetId)}"><c:if test="${exist == item.objectId }">处理要显示的内容</c:if></c:forEach>
if,else语句使用c:choose标签,替换如下:
<c:choose><c:when test="${fn:contains(existedWidgetId,item.objectId)}"><div class="box widget" style="border:1px solid blue;"></c:when><c:otherwise><div class="box widget" ></c:otherwise></c:choose>
<c:set var="contains" value="false" /><c:forEach var="exist" items="${existedWidgetId }" begin="0" end="${fn:length(existedWidgetId)}"><c:if test="${exist == item.objectId }"><c:set var="contains" value="true" /></c:if></c:forEach><c:choose><c:when test="${contains == true }"><div class="box widget" style="border:1px solid blue;"></c:when><c:otherwise><div class="box widget" ></c:otherwise></c:choose>
为什么我要用一个c:set呢?
是因为不用直接循环设值的话,你会发现页面这段代码循环了好几次,因为你每次foreach都要出一个结果。
所以用c:set,设置一个值来当作flag。
可以参考这个页面的说明:http://stackoverflow.com/questions/1490139/evaluate-list-contains-string-in-jstl
JSTL是没有break函数的。所以也不能跳出循环。
0 0
- 慎用fn:contains,使用c:forEach替代
- fn:contains
- <c:if test="${fn:contains(name, searchString)}">
- <c:if test="${fn:contains(name, searchString)}">
- c:if 通过${fn:contains(id,'')多条件判断
- 慎用ArrayList的contains方法,使用HashSet的contains方法代替
- java 慎用ArrayList的contains方法,使用HashSet的contains方法代替
- 慎用ArrayList的contains方法,使用HashSet的contains方法代替
- 慎用ArrayList的contains方法,使用HashSet的contains方法代替
- 慎用ArrayList的contains方法,使用HashSet的contains方法代替
- JSTL 使用 c:forEach
- c:forEach使用
- 使用c:forEach标签
- JSTL:c:forEach使用
- <c:foreach>参数使用
- <c:forEach> 标签使用
- fn contains 包含字符串 判断
- foreach替代不了for
- 心
- 底部Tab的实现(tabhost)
- getOutputStream() has already been called for this response
- SQLite中的时间日期函数
- 多线程实现数据库批量数据插入
- 慎用fn:contains,使用c:forEach替代
- 修复织梦后台添加文章时,一级联动也显示两个框的问题
- 对XML和YAML文件实现I/O操作
- setfacl提示 Operation not supported
- java复制对象
- 迅雷,快车,旋风下载地址加密和解密分析
- C#多线程(二)
- ICCV2013 录用论文(目标跟踪相关部分)
- Java运算符