比如我们为了处理日期的问题,传统我们要写一个类,然后对数据进行转型,而再JSTL面本身就有了一个处理日期格式的标签:
<fmt:formatDate value="${arr.createdDate}" type="date" pattern="yyyy/MM/dd" var="date"/>这样就对arr.createdDate的时间格式进行了转型,然后我们在用的时候只要用EL调这个标签即可${date}。
<c:forEach var="item" items="${boxIds}" varStatus="status">
<input type="hidden" name="boxIds" value="${item}"/>
</c:forEach>
<ec:exportXls fileName="中文.xls" tooltip="Export Excel"/>
<ec:row highlightRow="false" οnclick="alert( '${pres.eqp_cod}');"
οnmοuseοver="this.style.cursor='pointer'"
interceptor="org.ofbiz.aomp.war.MarkerIntercept"
>
一条记录拆分成多行,解决序号自增问题:
<c:set var="row" value="0" />
<c:forEach items="${backStoreInfoList}" var="backStoreInfo" varStatus="status">
<tr align="center">
<c:set var="row" value="${row+1}" />
<td >${row}</td>
<td>${backStoreInfo.SERVDOCID}</td>
<td>${backStoreInfo.APPMATERIELID}</td>
<td>故障件</td>
<td>故障件退库</td>
<td>${backStoreInfo.FAULTSTORECOUNT}</td>
<td ><input name="boxId" type="text" /></td>
</tr>
<tr align="center">
<c:set var="row" value="${row+1}" />
<td >${row}</td>
<td>${backStoreInfo.SERVDOCID}</td>
<td>${backStoreInfo.COMFIRMMATERIELID}</td>
<td>DOA件</td>
<td>DOA件退库</td>
<td>${backStoreInfo.DOASTORECOUNT}</td>
<td ><input name="boxId" type="text" /></td>
</tr>
<tr align="center">
<c:set var="row" value="${row+1}" />
<td >${row}</td>
<td>${backStoreInfo.SERVDOCID}</td>
<td>${backStoreInfo.COMFIRMMATERIELID}</td>
<td>良品件</td>
<td>良品件退库</td>
<td>${backStoreInfo.GOODSTORECOUNT}</td>
<td ><input name="boxId" type="text" /></td>
</tr>
</c:forEach>
拆分字符串在JSP页面
转自:http://www.cnblogs.com/huhu/articles/116855.html
在定制标记中使用 JSTL 函数库
JSTL 1.1 提供了一个函数库来实现许多有用的字符串操作。以下代码尝试使用 JSTL 的 fn:split() 函数将字符串 (a1/a2//b//c1/c2/c3) 拆分为三个标记(a1/a2、b 和 c1/c2/c3):
<!-- SplitTest.jsp --> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> <p>fn:split - <c:set var="str" value="a1/a2//b//c1/c2/c3"/> <c:set var="delim" value="//"/> <c:set var="array" value="${fn:split(str, delim)}"/> <c:forEach var="token" items="${array}"> [<c:out value="${token}"/>] </c:forEach>
上面的代码未生成所要的结果,这是因为 fn:split() 是基于 java.util.StringTokenizer 的,后者将 delim 参数作为一组分隔字符处理。以下是 SplitTest.jsp 生成的输出:
fn:split - [a1] [a2] [b] [c1] [c2] [c3]
JSTL 提供了其他字符串函数(如 fn:contains()、fn:substringBefore() 和 fn:substringAfter()),可以通过循环使用这些函数将 a1/a2//b//c1/c2/c3 拆分为 a1/a2、b 和 c1/c2/c3。该循环由 <u:while> 标记控制:
<!-- WhileTest.jsp --> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> <%@ taglib prefix="u" uri="/WEB-INF/util.tld" %> <p>u:while - <c:set var="str" value="a1/a2//b//c1/c2/c3"/> <c:set var="delim" value="//"/> <u:while test="/${fn:contains(str, delim)}"> [<c:out value="${fn:substringBefore(str, delim)}"/>] <c:set var="str" value="${fn:substringAfter(str, delim)}"/> </u:while> [<c:out value="${str}"/>]
请注意,$ 字符在 test 条件中使用反斜杠进行了转义。因此,JSP 容器将 test 属性的值作为文本处理,而不求解 JSP 表达式的值。<u:while> 标记由 WhileTag 类处理,该类在每此迭代前求解 ${fn:contains(str, delim)} 表达式。${fn:substringBefore(str, delim)} 表达式返回字符串的第一个标记,而 ${fn:substringAfter(str, delim)} 返回剩余标记。WhileTest.jsp 页面生成所要的输出:
u:while - [a1/a2] [b] [c1/c2/c3]