一:添加评论前台
在显示文章内容的同时, 显示添加回复超链接
<a style="cursor:hand;" onClick="openAddReArt('${requestScope.articleInfo.id}')">添加回复内容</a>
<%}}%>
通过本页的js实现带参数跳转
<script language="javascript">
function openAddReArt(id){
var hdc=window.open('blog/blog_ReArticleInfo_add.jsp?id='+id,'','width=500,height=200');
width=screen.width;
height=screen.height;
hdc.moveTo((width-480)/2,(height-147)/2);
}
</script>
再把用户名,帖子id传给后台action
<s:form action="reArticleInfo_reArticle_add">
<tr>
<td width="513" height="30">文章回复:${sessionScope.account}</td>
</tr>
<tr>
<td height="93"><s:textarea name="content" cols="75" rows="5"/></td>
</tr>
<tr>
<td height="30"><s:submit value=" 回复 "/><s:hidden name="re_id" value="%{#request.id}"/></td>
</tr>
</s:form>
</table>
二:添加评论后台
细节上, action实现ModelDriven接口
public class ReArticleAction extends ActionSupport implements ModelDriven<ReArticleInfo>,
private ReArticleInfo reArticleInfo = new ReArticleInfo();
回复信息是"s:textarea name="content"" ,由ModelDriven写入
public String reArticle_add() {
account = (String) request.getSession().getAttribute("account");
String result = "添加回复信息失败!";
reart_objectDao = new ObjectDao<ReArticleInfo>();
if (null == account || account.equals("")) {
result="您还没有登录!";
} else {
if (!reArticleInfo.getContent().equals("")) {
reArticleInfo.setAccount(account);
reArticleInfo.setRe_time(dateTimeFormat);
reart_objectDao.saveT(reArticleInfo);
result = "添加回复信息成功!";
}
}
request.setAttribute("result", result);
三:显示评论后台
显示评论对应的文章时,就要把所有评论一起查出来:
// 文章回复内容的详细查询
hql = "from ReArticleInfo where re_id=" + id + " order by id desc";//查询文章详细内容的hql语句
ObjectDao<ReArticleInfo> re_objectDao = new ObjectDao<ReArticleInfo>();//实例化持久化类
List<ReArticleInfo> list = null;//定义List集合
评论的分页
// 分页操作
int showNumber = 3;
Integer count = 0;
if (null != request.getParameter("count")) {
count = Integer.valueOf(request.getParameter("count"));
}
list = re_objectDao.queryList(hql);
如果有评论,就分页显示[评论
正常分页, 先看是否能整除, 跳到第n页的话计算分页
if(list.size()!=0){//有评论
int maxPage = list.size();//评论总数
if (maxPage % showNumber == 0) {//正好显示n页
maxPage = maxPage / showNumber;
} else {//不能整除的评论,放在最后一页显示
maxPage = maxPage / showNumber + 1;
}
if (0 == count) {//评论的第一页
list = re_objectDao.queryList(hql, showNumber, count);
} else {//评论的第n页, 跳转到该页对应的评论分页上
count--;
list = re_objectDao.queryList(hql, showNumber, count * showNumber);
}
request.setAttribute("count", count);
request.setAttribute("list", list);
request.setAttribute("maxPage", maxPage);
}
四:显示评论前台
先接收评论的集合list
s:iterator遍历
<s:if test="%{#request.list!=null}">
<s:iterator value="%{#request.list}" id="reArticle">
<table width="469" border="0" cellpadding="0" cellspacing="0">
<tr>
<td height="30" colspan="2">回复人:<s:property value="#reArticle.account"/></td>
</tr>
<tr>
<td height="59" colspan="2"><s:property value="#reArticle.content"/></td>
</tr>
<tr>
<td width="283" height="30">回复时间:<s:property value="#reArticle.re_time"/></td>
<td width="221" align="right">
<%
ArticleInfo articleInfo=(ArticleInfo)request.getAttribute("articleInfo");
String account=null;
if(null!=session.getAttribute("account")){
account=(String)session.getAttribute("account");
}
if(articleInfo.getAuthor().equals(account)){
%>
<s:a href="reArticleInfo_reArticle_delete.htm?id=%{#reArticle.id}">删除</s:a>
<%} %>
</td>
</tr>
</table>
<hr class="hrr">
</s:iterator>