html的显示消息和留言板

<div class="inner_content">
<c:forEach items="${notices}" var="n">
<c:choose>
<c:when test="${n.suffix=='.avi' || n.suffix=='.mp4'}">
<p class="inner_video">
<video src="${n.imageUrl }" width="500" height="375" controls>
Your browser dosen't support the video tag.
</video>
</p>
<p style="font-size:10px; line-height:24px;">
${n.text }
</p>
</c:when>
<c:when test="${n.suffix!='.avi' && n.suffix!='.mp4'}">
<p class="inner_image">
<img src="${n.imageUrl }" width="100%">
</p>
<p style="font-size:14px; line-height:24px; text-indent:2em;">
${n.text }
</p>
</c:when>
</c:choose>
</c:forEach>
</div>
留言板:

<div class="comment_title">
<h4>
评论(
<c:if test="${empty plNum}">0</c:if>
<c:if test="${!empty plNum}">${plNum}</c:if>
条)
</h4>
</div>
<div class="comment_main">
<div id="PLmain">
<c:forEach items="${msgList.list}" var="m"> <dl id="pl_${m.id}">
<dt>
<img src="/pages/foreground/images/user_image.jpg">
</dt>
<dd>
<p>
<span class="c_name">${m.uid.uname }</span>
<span class="c_time">
${m.time }
</span>
<!-- <span class="c_jb"><a href="#">举报</a></span> -->
</p>
<p class="comment_user">
${m.leave }
</p>
<p class="comment_share">
<a href="javascript:void(0);" title="${m.id }" onclick="a_huifu(this);">回复</a>
<a href="javascript:void(0);" title="${m.id }" onclick="a_zan(this);">赞(<label id="labzan_${m.id }">${m.zan }</label>)</a>
</p>
<div id="saydiv${m.id}" class="c_say" style="display:none;">
<textarea id="text${m.id }" placeholder="请输入回复..."></textarea>
<c:if test="${empty loginUser}">
<p class="c_text">
注册成为会员后方可回复
<a class="c_rigister" href="/user/register/user_register!userRegister.ds">注册</a>
<span class="c_line">|</span>
<a class="c_login" href="#login">登录</a>
</p>
</c:if> <c:if test="${!empty loginUser}">
<input id="btn_${m.id}" title="${m.websiteMessage.id}" type="button" value="回复" myId="${m.id }" onclick="huifu(this);" />
</c:if>
</div>
//重点。。。留言的读取
<c:forEach items="${map}" var="h"> //map 集合
<c:forEach items="${h.key}" var="va"> //判断键值
<c:if test="${va eq m.id}"> //判断键值和id号是否相等
<c:forEach items="${h.value}" var="hvalue"> //相等取值 <div class="c_reply" id="re_${hvalue.id }">
<dl>
<dt>
<img src="/pages/foreground/images/user_image.jpg">
</dt>
<dd>
<p>
<span class="c_name">${hvalue.uid.uname }</span>
<span class="c_time">
${hvalue.time }
</span>
<!-- <span class="c_jb"><a href="#">举报</a></span> -->
</p>
<p class="comment_user">
${hvalue.leave }
</p>
</dd>
</dl>
</div>
</c:forEach>
</c:if>
</c:forEach>
</c:forEach> </dd> </dl>
</c:forEach> </div>
<c:if test="${!empty msgList.list}">
<div class="page_num">
<ul> <c:if test="${msgList.pageCount > 1 && msgList.pageNumber != msgList.pageCount}">
<a href="/user/site_message!cgIndex.ds?type=${type}&id=${id}&msgnum=1">首页</a>,
<a href="/user/site_message!cgIndex.ds?type=${type}&id=${id}&msgnum=${msgList.pageNumber-1}">上一页</a>,
<a href="/user/site_message!cgIndex.ds?type=${type}&id=${id}&msgnum=${msgList.pageNumber+1}">下一页</a>,
<a href="/user/site_message!cgIndex.ds?type=${type}&id=${id}&msgnum=${msgList.pageCount}">末页</a>
</c:if>
<c:if test="${msgList.pageNumber eq msgList.pageCount}">
<a href="/user/site_message!cgIndex.ds?type=${type}&id=${id}&msgnum=1">首页</a>,
<a href="/user/site_message!cgIndex.ds?type=${type}&id=${id}&msgnum=${webMessages.pageNumber-1}">上一页</a>
</c:if>
第${msgList.pageNumber }页,共${msgList.pageCount }页 </ul>
</div>
</c:if>
</div> <div class="reply_input">
<textarea id="leaveText" placeholder="请控制提问字数在300字以内..."></textarea>
<c:if test="${empty loginUser}">
<p class="c_text">
注册成为会员后方可回复
<a class="c_rigister" href="#">注册</a>
<span class="c_line">|</span>
<a class="c_login" href="#">登录</a>
</p>
</c:if>
<c:if test="${!empty loginUser}">
<input class="reply_confirm" type="button" value="确定" onclick="pl();" style="overflow: hidden; " />
</c:if> </div>
</DIV>
<script type="text/javascript">
//获取当地时间
var date=new Date();
var y=date.getFullYear();
var m=(date.getMonth()+1);
var d=date.getDate();
var h=date.getHours();
var mm=date.getMinutes();
var s=date.getSeconds();
var ss=date.getMilliseconds();
var da=y+'-'+m+'-'+d+' '+h+':'+mm+':'+s+'.'+ss;
var arrContent={};//存类容,
var islogin="${loginUser}1";//是否登陆 1 是登陆,否则没有登陆
//回复按钮,显示输入框
function a_huifu(a){
if(arrContent["textId"]){
var cf=confirm('是否离开?');
if(cf==false){
return ;
}
$(arrContent['textId']).val('');
$(arrContent['textId']).attr({style:"display:none;"});
} var lybmsgId=$(a).attr('title');//留言板
var contentId='#saydiv'+lybmsgId;
var contentState=$(contentId).attr('style');
var text="#text"+lybmsgId;//输入的内容的ID if(contentState=='display:none;'){
$(contentId).attr({style:"display:block;"});
}
else if(contentState=='display:block;'){
if(islogin!='1'&&$(text).html().length>0){
arrContent['textId']=text;
var cf=confirm('是否离开?');
if(cf==true){
//表示,已经登陆了,离开
$(text).val('');//清空留言
$(contentId).attr({style:"display:none;"});
}
}else{
$(text).val('');//清空留言
$(contentId).attr({style:"display:none;"});
}
}
}
//确定回复
function huifu(btn){
var btnId=$(btn).attr('id');
var parentId=btnId.substring(4,btnId.length);
var msgId=$(btn).attr('title');
var leave=$('#text'+parentId).val();
$.post('/user/site_message!saveReplay.ds',
{"parentId":parentId,"type":2,"msgId":msgId,"leave":leave}
,function(data){
alert(data.message);
if(data.success){
var text="#text"+parentId;//输入的内容的ID
var contentId='#saydiv'+parentId;
$(text).val('');//清空留言
$(contentId).attr({style:"display:none;"});
addHtml(btn,leave);
}
});
}
//回复成功后添加html留言
function addHtml(a,leave){
var html="<div class='c_reply' id='re_${hvalue.id }'><dl><dt><img src='/pages/foreground/images/user_image.jpg'></dt>";
html+="<dd><p><span class='c_name'>${hvalue.uid.uname }${loginUser.uname}</span><span class='c_time'>${hvalue.time }"+da+"</span></p>";
html+=" <p class='comment_user'>${hvalue.leave }"+leave+"</p></dd></dl><div>";
$(a).parent().parent().append(html);
}
//赞
function a_zan(a){
var zanId=$(a).attr('title');
var zanBtnId='#labzan_'+zanId;
var count =$(zanBtnId).html();
$.post('/user/site_message!zan.ds',{"id":zanId},function(data){
if(data.success){
$(zanBtnId).html(parseInt(count)+1);
}
});
}
//最下面的评论
function pl(){
var leave=$('#leaveText').val().trim();
if(leave.length==0){
alert('请输入文字');
return ;
}
if(leave.length>300){
alert('不能大于300字');
return;
}
var plId="${websiteMessage.id}"; $.post('/user/site_message!savePL.ds',
{"msgId":plId,"leave":leave}
,function(data){
alert(data.message);
if(data.success){
var id=data.savePlId;
var html="<dl ><dt><img src='/pages/foreground/images/user_image.jpg'></dt><dd><p><span class='c_name'>${loginUser.uname}</span>";
html+="<span class='c_time'> "+da+"</span></p>";
html+="<p class='comment_user'>"+leave+" </p>";
html+="<p class='comment_share'><a onclick='a_huifu(this);' title='"+id+"' href='javascript:void(0);'>回复</a>";
html+="<a onclick='a_zan(this);' title='"+id+"' href='javascript:void(0);'>赞(<label id='labzan_"+id+"'>0</label>)";
html+="</a></p><div id='saydiv"+id+"' class='c_say' style='display:none;'><textarea id='text"+id+"' placeholder='请输入回复...'></textarea>";
html+="<input id='btn_"+id+"' type='button' onclick='huifu(this);' myid='"+id+"' value='回复' title='"+plId+"'></div></dd></dl>";
$('#PLmain').append(html);
$('#leaveText').val('');
}
});
}
</script>
@Resource
private MessageBordService messageBordService;
@Resource
private WebsiteMessageService websiteMessageService;
private int pagenum=1;//页数
private int msgnum=1;//留言页数
private Long msgId;//公告的Id
private Long parentId;//回复留言的Id
private Integer type;//1: 留言 (评论)2:回复
private String leave;//留言(评论)//回复
private MessageBord msg=null;
@UnLogin
public String index(){
List<WebsiteMessage> webMessages = websiteMessageService.listLateWebMessage(CommonVar.WEBSITEMESSAGE,type);
setAttribute("webMessages", webMessages);
WebsiteMessage websiteMessage = websiteMessageService.get(id);
setAttribute("websiteMessage", websiteMessage);
setAttribute("type", type);
return "index";
}
/*if(value==1)
return '媒体报道';
if(value==2)
return '网站公告';
if(value==3)
return '成功案例';
if(value==4)
return '站内信息';*/
@UnLogin
public String cgIndex(){
Pager pager=new Pager();
pager.setPageNumber(pagenum);
pager.setPageSize(8);
DetachedCriteria de=DetachedCriteria.forClass(WebsiteMessage.class);
de.add(Restrictions.eq("isDelete", 0));
de.add(Restrictions.eq("mtype", type));
Pager list = websiteMessageService.findByPager(pager, de);
setAttribute("webMessages", list);
if(null!=id){
WebsiteMessage websiteMessage = websiteMessageService.get(id);
setAttribute("websiteMessage", websiteMessage);
Set<SystemNoticeWeb> systemNoticeWebs = websiteMessage.getSystemNoticeWebs();
setAttribute("notices", systemNoticeWebs);
}
setAttribute("type", type);
setAttribute("pagenum", pagenum);
//获取5留言(评论)
if(null!=id){
Pager msgPager=new Pager();
msgPager.setPageNumber(msgnum);
msgPager.setPageSize(4);//每页四条数据
DetachedCriteria msgde=DetachedCriteria.forClass(MessageBord.class);
msgde.add(Restrictions.eq("websiteMessage",websiteMessageService.get(id)));
msgde.add(Restrictions.eq("type", 1));
msgde.add(Restrictions.isNull("parentId"));
Pager msgList = messageBordService.findByPager(msgPager, msgde);
List<MessageBord> mbs = msgList.getList();
if(mbs!=null&&mbs.size()>=1){
setAttribute("id", id);
setAttribute("msgList", msgList);//用于取页数
setAttribute("plNum", mbs.size());//评论条数
getReplay(mbs,id);
}
Long totalNumber = websiteMessageService.getTotalNumber(Long.valueOf(id));
setAttribute("plNum", totalNumber);
}
return "index";
}
//所有的回复
private void getReplay(List<MessageBord> mbs,Long msgId){
//取出每条评论的回复存入集合
Map<String,List<MessageBord>>map=new HashMap<String,List<MessageBord>>();
for (MessageBord messageBord : mbs) {
//获取每条评论
DetachedCriteria hude=DetachedCriteria.forClass(MessageBord.class);
hude.add(Restrictions.eq("websiteMessage", websiteMessageService.get(id)));
hude.add(Restrictions.eq("type", 2));
hude.add(Restrictions.eq("parentId", messageBord.getId()));
List<MessageBord> pls = messageBordService.getL(hude, -1);
String key=messageBord.getId().toString();
map.put(key, pls);
setAttribute("map", map);
}
}
//保存回复
public void saveReplay(){
try{
msg=new MessageBord();
LoanUser user=(LoanUser) getSession("loginUser");
msg.setLeave(this.leave);
msg.setParentId(this.parentId);
msg.setType(this.type);
msg.setUid(user);
msg.setTime(new Date());
msg.setZan(0);
msg.setWebsiteMessage(new WebsiteMessage(msgId));
messageBordService.save(msg);
super.ajaxJson(DbRecord.jsonShowInfo(true, "留言成功"));
}catch (Exception e) {
super.ajaxJson(DbRecord.jsonShowInfo(false, "留言失败"));
}
}
//保存评论
public void savePL(){
if(this.leave.length()>300){
super.ajaxJson(DbRecord.jsonShowInfo(false, "不能大于300字"));
return;
}
JSONObject json=new JSONObject();
try{
LoanUser user=(LoanUser) getSession("loginUser");
msg=new MessageBord();
msg.setLeave(this.leave);
msg.setTime(new Date());
msg.setType(1);
msg.setUid(user);
msg.setWebsiteMessage(new WebsiteMessage(msgId));
msg.setZan(0);
Long save = messageBordService.save(msg);
json.put("success", true);
json.put("message", "评论成功");
json.put("savePlId", save);
super.ajaxJson(json.toString());
}catch (Exception e) {
super.ajaxJson(DbRecord.jsonShowInfo(false, "评论失败"));
}
}
//赞
public void zan(){
try{
if(null!=id){
MessageBord messageBord = messageBordService.get(id);
messageBord.setZan((messageBord.getZan()+1));
messageBordService.update(messageBord);
super.ajaxJson(DbRecord.jsonShowInfo(true, "赞成功"));
}
}catch (Exception e) {
super.ajaxJson(DbRecord.jsonShowInfo(false, "赞失败"));
}
}
html的显示消息和留言板的更多相关文章
- 【weiphp微信开发教程】留言板插件开发详解
基于weiphp框架的留言板插件教程: 1.功能分析 传统的留言板应该具有发布留言.查看留言.回复留言.管理留言等功能,本教程开发的是最基本的留言板,仅包含发布留言和查看留言两个功能,根据功能用boo ...
- (详细)php实现留言板---会话控制-----------2017-05-08
要实现留言功能,发送者和接受者必不可少,其次就是留言时间留言内容. 要实现的功能: 1.登录者只能查看自己和所有人的信息,并能够给好友留言 2.留言板页面,好友采取下拉列表,当留言信息为空时,显示提示 ...
- 用php(session)实现留言板功能----2017-05-09
要实现留言功能,发送者和接受者必不可少,其次就是留言时间留言内容. 要实现的功能: 1.登录者只能查看自己和所有人的信息,并能够给好友留言 2.留言板页面,好友采取下拉列表,当留言信息为空时,显示提示 ...
- flask实战-留言板-Web程序开发流程
Web程序开发流程 在实际的开发中,一个Web程序的开发过程要设计多个角色,比如客户(提出需求).项目经理(决定需求的实现方式).开发者(实现需求)等,在这里我们假设自己是一个人全职开发.一般来说一个 ...
- php......留言板
部门内部留言板 一.语言和环境 实现语言 PHP 二.要求: 本软件是作为部门内员工之间留言及发送消息使用. 系统必须通过口令验证,登录进入.方法是从数据库内取出用户姓名和口令的数据进行校验. 用户管 ...
- dd——留言板再加验证码功能
1.找到后台-核心-频道模型-自定义表单 2.然后点击增加新的自定义表单 diyid 这个,不管他,默认就好 自定义表单名称 这个的话,比如你要加个留言板还是投诉建议?写上去呗 数据表 这个不要碰, ...
- html的留言板制作(js)
这次留言板运用到了最基础的localstorage的本地存储,展现的效果主要有: 1.编写留言2.留言前可以编辑自己的留言昵称.不足之处: 1.未能做出我喜欢的类似于网易的叠楼功能. 2.未能显示评论 ...
- 11月8日PHP练习《留言板》
一.要求 二.示例页面 三.网页代码及网页显示 1.denglu.php 登录页面 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Tran ...
- LigerUi框架+jquery+ajax无刷新留言板系统的实现
前些天发布了LigerUi框架的增.删.改代码,一堆代码真的也没一张图片.有的网友推荐上图,所有今天把涉及到这个框架的开源的留言板共享给大家.在修改的过程中可能有些不足的地方希望大家拍砖. 因为留言板 ...
随机推荐
- html---textarea初始化时就有个table空格以及tab键操作无效
1 初始化时就有一个tab空格 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvRnJlZUFwZQ==/font/5a6L5L2T/fontsize/400 ...
- Nodejs解析HTML网页模块 jsdom
工作需要抓取某些网页,所以今天试用下了node下的jsdom模块.同样功能的还有jquery jsdom https://npmjs.org/package/jsdom API很简单. jsdom.e ...
- 关于消息推送和service的一些调查-清理内存通知栏点击无响应
起因:做了两个带推送的app:HiApp和WeApp,前者个推,后者百度推送,但前者有一个小缺陷. 现象:两部手机 1.htcD820t手机,运行中的app利用自带的关闭最近程序后,通知栏不清理该ap ...
- SSM搭配中的web.xml的配置信息
最近一段时间在自己学着搭建SSM框架的项目,其实这个项目自由自己不断尝试,不断失败,才能印象更深刻. 下面就说一下在项目中的web.xml的相关配置信息: <?xml version=" ...
- SGU 101.Domino( 欧拉路径 )
求欧拉路径...直接dfs即可,时间复杂度O(N) -------------------------------------------------------------------------- ...
- VC++学习之GDI概述
VC++学习之GDI概述 图形设备接口(GDI)是一个可执行程序,它接受Windows应用程序的绘图请求(表现为GDI函数调用),并将它们传给相应的设备驱动程序,完成特定于硬件的输出,象打印机输出和屏 ...
- 百度apistore第三方登陆
最近做一个个人博客,其中的登陆模块我想使用第三方登陆来做.上网搜一下有好多例子,但是大多数都是一个网站的第三方登陆,如QQ.微博.人人,没有集成的组件,于是就在网上搜一下百度的apistore,百度果 ...
- 搭建Hadoop集群 (一)
上面讲了如何搭建Hadoop的Standalone和Pseudo-Distributed Mode(搭建单节点Hadoop应用环境), 现在我们来搭建一个Fully-Distributed Mode的 ...
- C#学习日志 day 5 ------ windows phone 8.1真机调试手机应用
在vs2013中,可以写windows phone 8.1的程序,但是调试时需要用到windows自带的虚拟机hyper-V 正版的系统开启hyper—V的时候不会有问题,但是盗版的系统可能导致系统不 ...
- codevs 1455 路径 计算m^n%p
题目链接 题目描述 Description 小明从A1到An+1,他知道从A1到A2,从A2到A3,......,从An到An+1都有m条路,且从A1到An+1都只有这些路.小明想知道,从A1地到An ...