📄 forumtree.java
字号:
package com.yhbbs.comm.tag;
import java.util.HashMap;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;
import org.apache.log4j.Logger;
import com.yhbbs.article.biz.ArticleBiz;
import com.yhbbs.article.itface.Article;
import com.yhbbs.utils.ReqUtils;
import com.yhbbs.utils.StringUtils;
/**
* <p>Title: 论坛帖子回复列表</p>
* <p>Company: www.yyhweb.com</p>
* <br><b>CopyRight: yyhweb[由由华网]</b>
* @author stephen
* @version YHBBS-2.0
*/
public class ForumTree extends TagSupport{
private static final long serialVersionUID = 1L;
private static Logger bbslog = Logger.getLogger(ForumTree.class);
public int doStartTag() throws JspException {
return 0;
}
public int doEndTag() throws JspException {
try{
HttpServletRequest request = (HttpServletRequest)pageContext.getRequest();
StringBuffer sb = new StringBuffer();
int classId = ReqUtils.getInt(request,"cId");
int forumId = ReqUtils.getInt(request,"fId");
int artId = ReqUtils.getInt(request,"aId");
int curPage = ReqUtils.getInt(request,"curPage");
int artreplay = ArticleBiz.getArtReplayC(artId);
int pagesize = 12;// 这个地方的值必须要和每页回复帖子显示数目一致
String link2 = "Article.htm?cId="+classId+"&fId=" + forumId+"&aId="+artId;
int start = 0;
if(curPage>1){
start = (curPage-1)*pagesize;
link2 = link2+"&curPage="+curPage;
}
int flr = pagesize*(curPage-1)+1;
HashMap<String,Integer> artrp = new HashMap<String,Integer>();
artrp.put("artId",artId);
artrp.put("start",start);
artrp.put("end",pagesize);
List replays = ArticleBiz.getArtReplay(artrp);
request.setAttribute("replist", replays);
Article repart = null;
sb.append("<table width='100%' cellSpacing=0 cellPadding=0>");
for(int i=0;i<replays.size();i++){
repart = (Article) replays.get(i);
String content = StringUtils.strEncode(repart.getContent().getContent());
if(content.length()>40)
content = content.substring(0,40);
// 保持截取的内容在一行显示
content = content.replaceAll("<br>", "");
content = content.replaceAll("\n", "");
sb.append("<tr height='22px'><td> <img src='webapp/images/class1.gif'> ");
sb.append("<a href='"+link2+"#"+repart.getId()+"'>");
sb.append(content);
sb.append("</a> -- <a href='User.htm?uId="+repart.getUserid()+"'>");
sb.append(repart.getUser());
sb.append("</a> ["+repart.getPosttime()+"]");
sb.append("</td></tr>");
}
if(artreplay>pagesize){
sb.append("<tr><td>");
sb.append(getPageInfo(artreplay,pagesize,curPage,classId,forumId,artId));
sb.append("</td></tr>");
}
sb.append("</table>");
request.setAttribute("artId", artId);
request.setAttribute("htmlInfo", sb.toString());
JspWriter out = pageContext.getOut();
out.println(sb);
sb = null;
}catch(Exception e){
bbslog.error("ForumTree tag's doEndTag error!");
}
return 6;
}
private String getPageInfo(int artTotal,int pageSize,int curPage,int classId,int forumId,int artId){
int pagetotal = 0;
pagetotal = artTotal%pageSize==0?artTotal/pageSize:artTotal/pageSize+1;
if(pagetotal==0){
pagetotal=1;
}
if(curPage<1){
curPage=1;
}else if(curPage>pagetotal){
curPage=pagetotal;
}
StringBuffer sb = new StringBuffer();
String pageInfo = "";
if(pagetotal>1){
sb.append("<table class='tab' width='100%' height='100%' cellSpacing=0 cellPadding=0>");
sb.append("<tr><td> 共<b>");
sb.append(pagetotal);
sb.append("</b>页 <b>");
sb.append(artTotal);
sb.append("</b>个记录 当前第<b>");
sb.append(curPage);
sb.append("</b>页 ");
sb.append("<img src='webapp/images/first.gif' border=0 alt='首页' style='cursor:hand;' ");
sb.append("onclick='ArtReplays("+classId+","+forumId+","+artId+",1)'>");
int prePage=curPage>=2?curPage-1:curPage;
sb.append("<img src='webapp/images/previous.gif' border=0 alt='上一页' style='cursor:hand;' ");
sb.append("onclick='ArtReplays("+classId+","+forumId+","+artId+","+prePage+")'>");
sb.append(" [");
int pagebegin = 1;
int pageend = pagetotal;
if(curPage <= 5 && pagetotal - curPage > 5){
pageend = pagetotal < 10 ? pagetotal : 10;
}else
if(curPage > 5 && pagetotal - curPage > 5) {
pagebegin = curPage - 4;
pageend = curPage + 5;
} else{
if(curPage > 5 && pagetotal - curPage <= 5)
pagebegin = pagetotal < 10 ? 1 : pagetotal - 9;
}
for(int i = pagebegin; i <= pageend; i++){
if(i == curPage){
sb.append(" <b>"+i+"</b>");
} else{
sb.append(" <span style='cursor:hand;' onclick='ArtReplays("+classId+","+forumId+","+artId+","+i+")'>");
sb.append(i);
sb.append("</span>");
}
}
curPage = curPage<=pagetotal-1?curPage+1:pagetotal;
sb.append("] ");
sb.append("<img src='webapp/images/next.gif' border=0 alt='下一页' style='cursor:hand;' ");
sb.append("onclick='ArtReplays("+classId+","+forumId+","+artId+","+curPage+")'>");
sb.append("<img src='webapp/images/last.gif' border=0 alt='末页' style='cursor:hand;' ");
sb.append("onclick='ArtReplays("+classId+","+forumId+","+artId+","+pagetotal+")'>");
sb.append("</td></tr>");
sb.append("</table>");
}else{
sb.append(" 共<b>");
sb.append(pagetotal);
sb.append("</b>页 <b>");
sb.append(artTotal);
sb.append("</b>个记录 ");
}
pageInfo = sb.toString();
sb = null;
return pageInfo;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -