1.假设字符串太长,想实现鼠标放上去提示出全部的文字,默认显示一部分能够使用这样的方法:
<td><a title="${commentBack.content }">${fn:substring(commentBack.content,0,15) }...</a></td> a标签的title属性能够满足须要,fn是jstl的函数标签。
2.分页时要先查询出记录总条数,有时候须要依据条件查询出总条数。全部条件使用and连接。运行sql时会出错,要把第一个and替换为where才干够。
StringBuffer sb=new StringBuffer("select count(*) as total from t_comment"); if(s_comment.getNewsId()!=-1){ sb.append(" and newsId="+s_comment.getNewsId()); } if(StringUtil.isNotEmpty(bCommentDate)){ sb.append(" and TO_DAYS(commentDate)>=TO_DAYS('"+bCommentDate+"')"); } if(StringUtil.isNotEmpty(aCommentDate)){ sb.append(" and TO_DAYS(commentDate)<=TO_DAYS('"+aCommentDate+"')"); } PreparedStatement pstmt=con.prepareStatement(sb.toString().replaceFirst("and", "where")); ResultSet rs=pstmt.executeQuery(); if(rs.next()){ return rs.getInt("total"); }else{ return 0; }3.分页util
public static String getPagation(String targetUrl,int totalNum,int currentPage,int pageSize){}
targetUrl是要传给分页控件显示的地址,totalNum是上面查询出来的总条数。currentPage当前的页数,pageSize页大小
首先须要计算出总页数:int totalPage=totalNum%pageSize==0?
totalNum/pageSize:totalNum/pageSize+1;
假设能够整除,总页数就不会加1,否则总页数要加1.
拼接上一页时,要推断是不是第一页,要分开处理
if(currentPage==1){
pageCode.append("<li class='disabled'><a href='#'>上一页</a></li>");
}else{
pageCode.append("<li><a href='"+targetUrl+"&page="+(currentPage-1)+"'>上一页</a></li>");
}
拼接下一页时,类似处理。
我们最多仅仅显示5页。所以要拼接当前页的前后二条数据。代码例如以下
for(int i=currentPage-2;i<=currentPage+2;i++){
if(i<1 || i>totalPage){
continue;
}
if(i==currentPage){
pageCode.append("<li class='active'><a href='#'>"+i+"</a></li>");
}else{
pageCode.append("<li><a href='"+targetUrl+"&page="+i+"'>"+i+"</a></li>");
}
}
下图是一个拼接的简单图:
以下是完整演示样例代码:
public static String getPagation(String targetUrl,int totalNum,int currentPage,int pageSize){ int totalPage=totalNum%pageSize==0?totalNum/pageSize:totalNum/pageSize+1; StringBuffer pageCode=new StringBuffer(); pageCode.append("<li><a href='"+targetUrl+"&page=1'>首页</a></li>"); if(currentPage==1){ pageCode.append("<li class='disabled'><a href='#'>上一页</a></li>"); }else{ pageCode.append("<li><a href='"+targetUrl+"&page="+(currentPage-1)+"'>上一页</a></li>"); } for(int i=currentPage-2;i<=currentPage+2;i++){ if(i<1 || i>totalPage){ continue; } if(i==currentPage){ pageCode.append("<li class='active'><a href='#'>"+i+"</a></li>"); }else{ pageCode.append("<li><a href='"+targetUrl+"&page="+i+"'>"+i+"</a></li>"); } } if(currentPage==totalPage){ pageCode.append("<li class='disabled'><a href='#'>下一页</a></li>"); }else{ pageCode.append("<li><a href='"+targetUrl+"&page="+(currentPage+1)+"'>下一页</a></li>"); } pageCode.append("<li><a href='"+targetUrl+"&page="+totalPage+"'>尾页</a></li>"); return pageCode.toString(); }4.分页后台查询处理dao层
须要在dao查询时传入一个PageBean參数,然后再拼接上
if(pageBean!=null){
sb.append(" limit "+pageBean.getStart()+","+pageBean.getPageSize());
}
limit 为分页准备的keyword。
以下的查询还包括了其它一些条件。
commentdate是前台通过时间控件传回的日期值,TO_DAYS()
mysql内部函数。date的形式为2015-07-06。
TO_DAYS('2015-06-7')返回736121, 返回一个天数 (从年份0開始的天数 )
完整代码:
public List<Comment> commentList(Connection con,Comment s_comment,PageBean pageBean,String bCommentDate,String aCommentDate)throws Exception{ List<Comment> commentList=new ArrayList<Comment>(); StringBuffer sb=new StringBuffer("select * from t_comment t1,t_news t2 where t1.newsId=t2.newsId"); if(s_comment.getNewsId()!=-1){ sb.append(" and t1.newsId="+s_comment.getNewsId()); } if(StringUtil.isNotEmpty(bCommentDate)){ sb.append(" and TO_DAYS(t1.commentDate)>=TO_DAYS('"+bCommentDate+"')"); } if(StringUtil.isNotEmpty(aCommentDate)){ sb.append(" and TO_DAYS(t1.commentDate)<=TO_DAYS('"+aCommentDate+"')"); } sb.append(" order by t1.commentDate desc "); if(pageBean!=null){ sb.append(" limit "+pageBean.getStart()+","+pageBean.getPageSize()); } PreparedStatement pstmt=con.prepareStatement(sb.toString()); ResultSet rs=pstmt.executeQuery(); while(rs.next()){ Comment comment=new Comment(); comment.setCommentId(rs.getInt("commentId")); comment.setNewsId(rs.getInt("newsId")); comment.setNewsTitle(rs.getString("title")); comment.setContent(rs.getString("content")); comment.setUserIP(rs.getString("userIP")); comment.setCommentDate(DateUtil.formatString(rs.getString("commentDate"), "yyyy-MM-dd HH:mm:ss")); commentList.add(comment); } return commentList; }5.form表单中的东西 通过submitbutton提交之后,就会消失,假设要保留,须要把他们在后台存到session之中,然后再前台通过el表达式获取。
也能够通过这个区分是查询还是,通过分页请求的后台。获取不同的參数。
if(StringUtil.isEmpty(page)){ page="1"; session.setAttribute("s_bCommentDate", s_bCommentDate); session.setAttribute("s_aCommentDate", s_aCommentDate); }else{ s_bCommentDate=(String) session.getAttribute("s_bCommentDate"); s_aCommentDate=(String) session.getAttribute("s_aCommentDate"); }
6.My97日期控件
设置開始日期小于结束日期:
開始日期的input id = "startDate"
结束日期的input id = "endDate"
日期 从:<input id="startDate" class="Wdate" type="text" onFocus="var endDate=$dp.$('endDate');WdatePicker({onpicked:function(){endDate.focus();},maxDate:'#F{$dp.$D(\'endDate\')}'})"/>
至
<input id="endDate" class="Wdate" type="text" onFocus="WdatePicker({minDate:'#F{$dp.$D(\'startDate\')}'})"/>