jsp语法
用JSTL分割字符 fn:split()引入:
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
业务场景:user.keyWords的值是一串以;分隔的字符串。现在需要分隔显示,解决办法如下:利用jsp中的jstl标签
<c:set value="${fn:split(user.keyWords, ';')}" var="keyWords"/>
<c:forEach items="${keyWords}" var="keyWord">
${keyWord}
</c:forEach>
${ fn:split(par_note, '|')[0] }
当时做这个遍历方法时,用好多奇奇怪怪的方法。都没有实现。后面用<c:forEach>的一个属性两句代码就解决了;
<c:forEach var="reward" items="${item.rewardRuleList}" varStatus="index">
${reward.show_remark}
<c:if test="${index.last==false}">
,
</c:if>
</c:forEach>
用index.last来判断是不是在遍历最后一个用(true\false);
例如结果是:啊啊啊啊啊,啊水水水水
<c:forEach>标签用于通用数据循环,它有以下属性
属 性 描 述 是否必须 缺省值
items 进行循环的项目 否 无
begin 开始条件 否 0
end 结束条件 否 集合中的最后一个项目
step 步长 否 1
var 代表当前项目的变量名 否 无
varStatus 显示循环状态的变量 否 无
vaStatus 属性
JSTL中的varStatus和 var 属性一样, varStatus 用于创建限定了作用域的变量。不过,由varStatus 属性命名的变量并不存储当前索引值或当前元素,而是赋予 javax.servlet.jsp.jstl.core.LoopTagStatus 类的实例。该类定义了一组特性,它们描述了迭代的当前状态,下面列出了这些特性:
特性 Getter 描述current getCurrent() 当前这次迭代的(集合中的)项
index getIndex() 当前这次迭代从 0 开始的迭代索引
count getCount() 当前这次迭代从 1 开始的迭代计数
first isFirst() 用来表明当前这轮迭代是否为第一次迭代的标志
last isLast() 用来表明当前这轮迭代是否为最后一次迭代的标志
begin getBegin() begin 属性值
end getEnd() end 属性值
step getStep() step 属性值
用c:forEach 中vaStatus的属性可以获得迭代的自身状态,如:
<c:forEach var="" items="" varStatus="status">
<c:out value="${status.current}"/> 当前对象
<c:out value="${status.index}"/> 此次迭代的索引
<c:out value="${status.count}"/> 已经迭代的数量
<c:out value="${status.first}"/> 是否是第一个迭代对象
<c:out value="${status.last}"/> 是否是最后一个迭代对象
</c:forEach>
<c:forEach>标签的items属性支持Java平台所提供的所有标准集合类型。此外,您可以使用该操作来迭代数组(包括基本类型数组)中的元素。它所支持的集合类型以及迭代的元素如下所示:
java.util.Collection:调用iterator()来获得的元素。
java.util.Map:通过java.util.Map.Entry所获得的实例。
java.util.Iterator:迭代器元素。
java.util.Enumeration:枚举元素。
Object实例数组:数组元素。
基本类型值数组:经过包装的数组元素。
用逗号定界的String:分割后的子字符串。
javax.servlet.jsp.jstl.sql.Result:SQL查询所获得的行。