el表达式计算:
如下:用page的numer和size来计算排序号
<tbody>
<c:forEach items="${page.content}" var="searchKeyword" varStatus="status">
<tr target="sid_mId" >
<td>${page.pageable.pageSize*(page.pageable.pageNumber-1)+status.index+1}</td>
<td>${searchKeyword.visitdate}</td>
<td>${searchKeyword.keyword}</td>
<td>${searchKeyword.searchcount}</td>
</tr>
</c:forEach>
</tbody>
判断是否循环的最后一个
<c:forEach items="${chapter.chapterDetail }" var="chapterDetail" varStatus="stat">
<c:if test="${!stat.last}">
这里不是最后一条
</c:if>
<c:if test="${stat.last}">
最后一条
</c:if>
</c:forEach>
用过的东西总是会忘记,所以今天决定自己记录下来,免得每次都要到处找:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
jsp中使用标签库:
<c:when test="${empty requestScope.dimOemtags}">//判断是否为空
<tr style="height: 30px; background-color:#F6F7F7; width: 1094px">
<td>序号</td>
<td >客户端类型</td>
<td ><font color="red">*</font>OEMTag</td>
<td ><font color="red">*</font>渠道名称</td>
<td >渠道类型</td>
<td >渠道来源</td>
<td >状态</td>
<td >生效日期</td>
</tr>
</c:when>
<c:forEach items="${requestScope.dimOemtags}" var="oemTag"varStatus="status">//对象集合遍历,要获得下标,用varStatus对象,index从0开始
<tr style="height: 30px">
<td>${status.index+1}</td>//下标
<td align="center">
<c:if test="${oemTag.clientTypeId=='1000'}">PC飞信</c:if>
<c:if test="${oemTag.clientTypeId=='2000'}">手机飞信</c:if>
<c:if test="${oemTag.clientTypeId=='5000'}">WAP飞信</c:if>
<c:if test="${oemTag.clientTypeId=='1004'}">飞信Bar</c:if>
</td>
<td align="center">
//把默认的日期格式转为特定格式的日期
<fmt:formatDate value="${oemTag.effDated}"pattern="yyyy-MM-dd hh:mm:ss"/>
</td>
特别注意这里的pattern
d 月中的某一天。一位数的日期没有前导零。
dd 月中的某一天。一位数的日期有一个前导零。
ddd 周中某天的缩写名称,在 AbbreviatedDayNames 中定义。
dddd 周中某天的完整名称,在 DayNames 中定义。
M 月份数字。一位数的月份没有前导零。
MM 月份数字。一位数的月份有一个前导零。
MMM 月份的缩写名称,在 AbbreviatedMonthNames 中定义。
MMMM 月份的完整名称,在 MonthNames 中定义。
y 不包含纪元的年份。如果不包含纪元的年份小于 10,则显示不具有前导零的年份。
yy 不包含纪元的年份。如果不包含纪元的年份小于 10,则显示具有前导零的年份。
yyyy 包括纪元的四位数的年份。
gg 时期或纪元。如果要设置格式的日期不具有关联的时期或纪元字符串,则忽略该模式。
h 12 小时制的小时。一位数的小时数没有前导零。
hh 12 小时制的小时。一位数的小时数有前导零。
H 24 小时制的小时。一位数的小时数没有前导零。
HH 24 小时制的小时。一位数的小时数有前导零。
m 分钟。一位数的分钟数没有前导零。
mm 分钟。一位数的分钟数有一个前导零。
s 秒。一位数的秒数没有前导零。
ss 秒。一位数的秒数有一个前导零。
<fmt:formatDate value="${xx}" pattern="dd/MM/yyyy HH:mm aa"/>和
<fmt:formatDate value="${xx}" pattern="dd/MM/yyyy hh:mm aa"/> 对于0点显示的结果不一样
这个太jb重要了,今天就是遇到的这的问题,我还以为是程序出了什么问题,一查数据库发现没有问题,
后来才发现可能是写法的问题:页面写的是hh,所以他把00点显示为了12
=============================================今天遇到一个恶心的问题============================================
在本地运行很好的代码,部署到服务器发现报错,感觉莫名其妙:
后来去后台查看错误:
原来是jsp页面的el表达式有问题:去查看:
<c:choose>
<c:when test="${indexDim.shownamedangwei==1}">
<input type="text" onclick="showDimTree(this)" class="showDimTreeText" value="${indexDim.showname}${indexDim.value}"/>
</c:when>
<c:otherwise>
<input type="text" onclick="showDimTree(this)" class="showDimTreeText" value="${indexDim.showname}${indexDim.value}${indexDim.shownamedangwei}"/>
</c:otherwise>
</c:choose>
原因在 这里,fuck,字符串比较应该用eq,而不能用==,但是本地不报错,这说明是tomcat不同的原因。
以后记住el表达式写法要严谨就行了!
改正:
======================================配置404和500页面注意点==================================
今天配置工程配置了错误页面
结构如下
调用的时候发现时一张白板
后来查找到原因是:页面声明部分少写了
=====================今天遇到一个中文乱码问题============================
所以
response.setContentType("text/html;charset=UTF-8");
response.setCharacterEncoding("UTF-8");
位置很重要,一定要放在out前面。。。
PrintWriter out = null;
====================================jsp中判断变量是否包含特殊字符========================================
<c:if test="${userProperty.loginAccountType==1 }">
<c:choose>
<c:when test="${userProperty.mobile.indexOf('@')>-1}">
邮箱
</c:when>
<c:otherwise>
手机号
</c:otherwise>
</c:choose>
</c:if>
jsp中判断,字符串是否包含特殊字符,用 xxxx.indeOf('@')>-1 其实就是java的写法