简单Blog项目笔记之七:文章的评论




一:添加评论前台

在显示文章内容的同时, 显示添加回复超链接

 <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>    







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值