总结最近学jstl的一些收获,自定义jstl标签,jstl foreach 遍历map

这两天做公司项目中的一个小功能,其中用了一些jstl标签,以前没有做过,现在基本实现了

1.jstl最常见的就是if 和foreach,out的使用

<div class="per-list">
    <ul class="list-4">
        <li><c:if test="${not empty listqikan }">
		<c:forEach var="file" items="${listqikan}" varStatus="status">
			<c:out value="${file['lunwenbiaoti']}"></c:out>   
		</c:forEach>

	</c:if>
    	</li>
    </ul>
</div>

var items varStatus begin end step这些经常用


自定义jstl标签

开发中可能有些功能需要自己去实现,但是标准有没有提供,我们可以自己来写一个

例如,我需要实现jstl中整数相除求整的实现,并将其运用到for each中

(1)首先写一个java实现:

package org.nssd.utils;

public class JSTLFunction {
	/**  
     * 两数相除获取整数结果  
     *    
     * @param first  
     * @param second  
     * @return int  
     */     
   public static int chufa(int first, int second) {      
       return first / second;      
    }      
}
(2)写自己的标签

<?xml version="1.0" encoding="UTF-8"?>      
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"     
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     
     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"     
     version="2.0">      
     <tlib-version>1.0</tlib-version>      
     <short-name>len</short-name>      
     <function>      
         <description>chufa</description><!-- 对这个EL方法的描述   --> 
         <name>chufa</name><!-- 调用EL方法的名称 -->   
         <function-class>org.nssd.utils.JSTLFunction</function-class>      
         <function-signature>int chufa(int,int)</function-signature>      
     </function>      
</taglib>    

命名为myJstl.tld


使用:${myTag:chufa(5,3) }

下面是实现项目的一个功能代码:


for each遍历map(map中还有一个list)Map<Integer, List<Object[]>>

<div class="total" style="height:256px; width:200px;OVERFLOW-y:auto;">
        	<ul class="journalListNum">
        		<c:if test="${not empty journalNumMap}">
					<c:forEach var="journal" items="${journalNumMap}">
						<li><c:out value="${journal.key}"/><span>年</span></li>
						<ul>
							<c:if test="${fn:length(journal.value) <= 10}">
								<li >
									<c:forEach  var="list" items="${journal.value}" varStatus="s">
										<a href="<portlet:renderURL>
													<portlet:param name="myaction" value="seeqikan" />
													<portlet:param name="objectId" value="${param.objectId}" />
													<portlet:param name="name" value="${list[0] }"></portlet:param>
													<portlet:param name="qikanzhongwenming" value="${list[4] }"></portlet:param>
												</portlet:renderURL>">${s.index +1}</a><span> </span>
									</c:forEach>		
								</li>
							</c:if>
							<c:if test="${fn:length(journal.value) > 10}">
								<c:forEach end="${myTag:chufa((fn:length(journal.value)),10) }" begin="1" step="1" varStatus="s">
									<li>
										<c:forEach var="list" items="${journal.value}" begin="${(s.index-1) *10}" end="${s.index * 10 -1}" step="1" varStatus="ss">
											<a href="<portlet:renderURL>
													<portlet:param name="myaction" value="seeqikan" />
													<portlet:param name="objectId" value="${param.objectId}" />
													<portlet:param name="name" value="${list[0] }"></portlet:param>
													<portlet:param name="qikanzhongwenming" value="${list[4] }"></portlet:param>
												</portlet:renderURL>">${ss.index +1}</a><span> </span>
										</c:forEach>		
									</li>
								</c:forEach>
								
								<li >
									<c:forEach  var="list" items="${journal.value}" begin="${myTag:chufa((fn:length(journal.value)),10)*10 }"  end="${fn:length(journal.value) -1}" step="1" varStatus="ss">
										<a href="<portlet:renderURL>
													<portlet:param name="myaction" value="seeqikan" />
													<portlet:param name="objectId" value="${param.objectId}" />
													<portlet:param name="name" value="${list[0] }"></portlet:param>
													<portlet:param name="qikanzhongwenming" value="${list[4] }"></portlet:param>
												</portlet:renderURL>">${ss.index +1}</a><span> </span>
										
									</c:forEach>		
								</li>
							</c:if>
						</ul>
					</c:forEach>
				</c:if>
        	</ul>
        </div>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值