在博客详情页中显示用户评论

1.在后台controller中使用pageable,评论自动分页.

//第一个参数表示,第几页
//第二参数表示,一页多少条记录
Pageable pageable = new PageRequest(page, 3, Sort.Direction.ASC, "id");

2.后台controller代码

@RequestMapping("find/{id}/{page}")
	public Map getPageComments(@PathVariable("id") Long id,@PathVariable("page") Integer page){
		Map m = new HashMap();
		Pageable pageable=new PageRequest(page,3,Sort.Direction.ASC,"id");
		Page<Comment> ls=commentRepository.findByDetailid(id,pageable);
		List<String> ls2 = new ArrayList<String>();
		if(ls.getContent()!=null) {
			for(int i=0;i<ls.getContent().size();i++) {
				String authorName=userRepository.findById(ls.getContent().get(i).getAuthorid()).getUserame();
				ls2.add(authorName);
			}
		}
		m.put("comments", ls);
		m.put("authorname", ls2);
		return m;
	}

3.在detail.js中根据后台返回的数据,利用循环显示评论与评论页数.并利用class选择器,substring方法获取当前评论页数,然后实现评论页面跳转,利用ajax实现局部刷新.
4.detail.js原始代码

$(document).ready(function(){
	var url = decodeURI(location.href);
	var result = url.split("?")[1];
	$.get("/spring/detail/find/"+result, function(data){
//        console.log(data);
//        console.log(data.detail.title);
        $("#titleid").text(data.detail.title);
        $("#bodyid").html(data.detail.content);
//        console.log(data.comments);
        var date=new Date(data.detail.createtime);
        $("#dtime").text(date.getFullYear()+'/'+(date.getMonth()+1)+'/'+date.getDate());
        $("#commentcount").text(data.comments.totalElements);
        var commentstr="";
        for(var i=0;i<data.comments.content.length;i++){
//        	console.log(data.comments.content[i].createtime);
        	var date=new Date(data.comments.content[i].createtime);
        	commentstr=commentstr+'<li class="comment even thread-even depth-1" id="li-comment-">									<div id="comment-969" class="comment_body contents">										<div class="profile">											<a href="/spring/demo/index/"><img src="/spring/demo/index/statics/images/9cc50a9e422fb1c89aebafeb959cef7a.jpg" class="gravatar" alt="小布丁"></a>										</div>										<div class="main shadow">											<div class="commentinfo">												<section class="commeta">													<div class="shang">														<h4 class="author"><a href="/spring/demo/index/" target="_blank" id="commentatr">'+data.authorname[i]+'<img src="/spring/demo/index/statics/images/9cc50a9e422fb1c89aebafeb959cef7a.jpg" class="gravatarsmall"></a></h4>													</div>												</section>											</div>											<div class="body">												<p id="cbid">'+data.comments.content[i].content+'</p>											</div>											<div class="xia info">												<span><time id="ctime">'+date.getFullYear()+'年'+(date.getMonth()+1)+'月'+date.getDate()+'日'+'</time></span>												<span><a rel="nofollow" class="comment-reply-link" href="/spring/demo/index/" onclick="return addComment.moveForm( "comment-969", "969", "respond", "1202" )" aria-label="回复给小布丁">回复</a></span>											</div>										</div>									</div>								</li>';
        }
        $("#cwrap").html(commentstr);
        var commentpage="<a class='prev page-numbers' style='cursor:pointer;'><</a>";
        var currentpage=0;
        for(var j=1;j<=data.comments.totalPages;j++){
        	commentpage=commentpage+"<a class='page-numbers' style='cursor:pointer;' id=pagenum"+j+">"+j+"</a>";
        }
        $("#comments-navicc").html(commentpage);
        $("#pagenum1").addClass("current");
        $(".page-numbers").click(function(){
//        	alert($(this).attr("id"));
        	var pagenum=$(this).attr("id").substring(7);
        	$.get("/spring/detail/find/"+result+"/"+(pagenum-1), function(data){
        		var commentstr2="";
        		for(var i=0;i<data.comments.content.length;i++){
//                	console.log(data.comments.content[i].createtime);
                	var date2=new Date(data.comments.content[i].createtime);
                	commentstr2=commentstr2+'<li class="comment even thread-even depth-1" id="li-comment-">	<div id="comment-969" class="comment_body contents"><div class="profile">											<a href="/spring/demo/index/"><img src="/spring/demo/index/statics/images/9cc50a9e422fb1c89aebafeb959cef7a.jpg" class="gravatar" alt="小布丁"></a></div><div class="main shadow"><div class="commentinfo"><section class="commeta"><div class="shang"><h4 class="author"><a href="/spring/demo/index/" target="_blank" id="commentatr">'+data.authorname[i]+'<img src="/spring/demo/index/statics/images/9cc50a9e422fb1c89aebafeb959cef7a.jpg" class="gravatarsmall"></a></h4></div></section></div><div class="body"><p id="cbid">'+data.comments.content[i].content+'</p></div><div class="xia info"><span><time id="ctime">'+date2.getFullYear()+'年'+(date2.getMonth()+1)+'月'+date2.getDate()+'日'+'</time></span><span><a rel="nofollow" class="comment-reply-link" href="/spring/demo/index/" onclick="return addComment.moveForm( "comment-969", "969", "respond", "1202" )" aria-label="回复给小布丁">回复</a></span></div></div></div></li>';
                	for(j=1;j<=data.comments.totalPages;j++){
                		$("#pagenum"+j).removeClass("current");
                	}
                	$("#pagenum"+pagenum).addClass("current");
        		}
                $("#cwrap").html(commentstr2); 
        	});
        });
	});
});

5.将detail.js中的方法进行封装,并添加功能:显示前一页评论.

$(document).ready(function(){
	var url = decodeURI(location.href);
	var result = url.split("?")[1];
	$.get("/spring/detail/find/"+result, function(data){
        $("#titleid").text(data.detail.title);
        $("#bodyid").html(data.detail.content);
		var dtime=dateFormatter(data.detail.createtime);
		$("#dtime").text(dtime);
		$("#commentcount").text(data.comments.totalElements);
		console.log(data.comments.totalPages);
		console.log(data.comments.content.length);
		showComment(data.comments,data.authorname);
		showCommentPage(data.comments);
		showCommentOfSelectedPage(data.comments,data.authorname,result);
		showCommentOfPrevPage(data.comments,data.authorname,result);
		
	});
});
//日期格式化
function dateFormatter(date1){
	var date = new Date(date1);
	var year =date.getFullYear()+'年';
	var month =(date.getMonth()+1)+'月';
	var day = date.getDate()+'日';
	var formatDate=year+month+day;
	return formatDate;
}
//显示评论
function showComment(comment,authorname){
	var commentstr="";
	for(var i=0;i<comment.content.length;i++){
		var ctime = dateFormatter(comment.content[i].createtime);
		commentstr=commentstr+'<li class="comment even thread-even depth-1" id="li-comment-">									<div id="comment-969" class="comment_body contents">										<div class="profile">											<a href="/spring/demo/index/"><img src="/spring/demo/index/statics/images/9cc50a9e422fb1c89aebafeb959cef7a.jpg" class="gravatar" alt="小布丁"></a>										</div>										<div class="main shadow">											<div class="commentinfo">												<section class="commeta">													<div class="shang">														<h4 class="author"><a href="/spring/demo/index/" target="_blank" id="commentatr">'+authorname[i]+'<img src="/spring/demo/index/statics/images/9cc50a9e422fb1c89aebafeb959cef7a.jpg" class="gravatarsmall"></a></h4>													</div>												</section>											</div>											<div class="body">												<p id="cbid">'+comment.content[i].content+'</p>											</div>											<div class="xia info">												<span><time id="ctime">'+ctime+'</time></span>												<span><a rel="nofollow" class="comment-reply-link" href="/spring/demo/index/" onclick="return addComment.moveForm( "comment-969", "969", "respond", "1202" )" aria-label="回复给小布丁">回复</a></span>											</div>										</div>									</div>								</li>';
	}
	$("#cwrap").html(commentstr);
}
//显示评论页数
function showCommentPage(comment){
	var commentpage="<a class='prev-page' style='cursor:pointer;'><</a>";
	var currentpage=0;
	for(var i=1;i<=comment.totalPages;i++){
		commentpage=commentpage+"<a class='page-numbers' style='cursor:pointer;' id=pagenum"+i+">"+i+"</a>";
	}
	$("#comments-navicc").html(commentpage);
	$("#pagenum1").addClass("current");
}
//显示评论选中页
function showCommentOfSelectedPage(comment,authorname,result){
	$(".page-numbers").click(function(){
        	var pagenum=$(this).attr("id").substring(7);
        	$.get("/spring/detail/find/"+result+"/"+(pagenum-1), function(data){
        		showComment(data.comments,data.authorname);
				for(i=1;i<=comment.totalPages;i++){
					$("#pagenum"+i).removeClass("current");
				}
				$("#pagenum"+pagenum).addClass("current");
        	});
    });
}
//显示评论前一页
function showCommentOfPrevPage(comment,authorname,result){
	$(".prev-page").click(function(){
			var pagenum=$(".page-numbers.current").attr('id').substring(7);
			if(pagenum>1){
				$.get("/spring/detail/find/"+result+"/"+(pagenum-2), function(data){
					showComment(data.comments,data.authorname);
	        	});
				for(i=1;i<=comment.totalPages;i++){
					$("#pagenum"+i).removeClass("current");
				}
				$("#pagenum"+(pagenum-1)).addClass("current");
			}
    });
}

6.效果图
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44315310/article/details/87966334