关于JSTL、EL表达式获取List长度时出错的问题

最近,项目遇到一个小问题,具体是点击事件触发窗口弹出,本地运行正常,而在线上环境发布运行时,死活打不开(ps:项目用的是easyui+spring mvc)

下面是弹出窗口的jsp,嵌套在iframe中。(标签库等文件都引入过)

<table>
		<span style="white-space:pre">		</span><tr>
					<c:choose>
								<c:when test="${list!=null&&list.size()==0}">
												<td>您在${warningDailyDate } 当天无记录</td>
								</c:when>
								<c:when test="${list!=null&&list.size()!=0}">
												<td>您在${warningDailyDate } 当天记录如下:</td>
								</c:when>
					</c:choose>
			</tr>  
			<tr>
				<td>
					<c:forEach  items="${list}"  var="attendance" varStatus="vs">
					<span style="white-space:pre">	</span> <fmt:formatDate  value='${attendance.punchTime}'   type='date'    pattern='yyyy-MM-dd HH:mm:ss'/> 
							  		 <c:if test="${vs.last!=true}">,</c:if>   
					</c:forEach>
				</td>
					</tr> 
				<tr>
						 <td>
							<font style="color:red">
											 		注:blablabla </br>
													 
							</font>
						</td>
				</tr>
			</table>

在线上环境,去掉<c:choose>标签就运行ok,最后发现是list.size()这个地方出了问题,我在本地运行正常,会去自动调用size()方法,本地和线上环境上,jsp所编译成的java文件也一样,到线上就痿了,估计是环境问题。

另外${list.size}是不行的,因为这个表达式执行时自动去调用了getSize()方法,但这个方法不存在则会出错,除非自己定义一个。

像平常${javabean.property}或者{javabean["property"]}其实是等同于${javabean.getProperty()},

线上环境的诡异问题具体不详,没继续研究了。

解决方案,用fn函数库:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> 

list的长度是:${fn:length(list)}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值