jsp记录

来源:互联网 发布:天下3男号捏脸数据 编辑:程序博客网 时间:2024/05/17 08:22

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>



用过的东西总是会忘记,所以今天决定自己记录下来,免得每次都要到处找:

<%@ 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的写法