1. <div class="inner_content">
  2. <c:forEach items="${notices}" var="n">
  3. <c:choose>
  4. <c:when test="${n.suffix=='.avi' || n.suffix=='.mp4'}">
  5. <p class="inner_video">
  6. <video src="${n.imageUrl }" width="500" height="375" controls>
  7. Your browser dosen't support the video tag.
  8. </video>
  9. </p>
  10. <p style="font-size:10px; line-height:24px;">
  11. ${n.text }
  12. </p>
  13. </c:when>
  14. <c:when test="${n.suffix!='.avi' && n.suffix!='.mp4'}">
  15. <p class="inner_image">
  16. <img src="${n.imageUrl }" width="100%">
  17. </p>
  18. <p style="font-size:14px; line-height:24px; text-indent:2em;">
  19. ${n.text }
  20. </p>
  21. </c:when>
  22. </c:choose>
  23. </c:forEach>
  24. </div>

留言板:

  1. <div class="comment_title">
  2. <h4>
  3. 评论(
  4. <c:if test="${empty plNum}">0</c:if>
  5. <c:if test="${!empty plNum}">${plNum}</c:if>
  6. 条)
  7. </h4>
  8. </div>
  9. <div class="comment_main">
  10. <div id="PLmain">
  11. <c:forEach items="${msgList.list}" var="m">
  12.  
  13. <dl id="pl_${m.id}">
  14. <dt>
  15. <img src="/pages/foreground/images/user_image.jpg">
  16. </dt>
  17. <dd>
  18. <p>
  19. <span class="c_name">${m.uid.uname }</span>
  20. <span class="c_time">
  21. ${m.time }
  22. </span>
  23. <!-- <span class="c_jb"><a href="#">举报</a></span> -->
  24. </p>
  25. <p class="comment_user">
  26. ${m.leave }
  27. </p>
  28. <p class="comment_share">
  29. <a href="javascript:void(0);" title="${m.id }" onclick="a_huifu(this);">回复</a>
  30. <a href="javascript:void(0);" title="${m.id }" onclick="a_zan(this);">赞(<label id="labzan_${m.id }">${m.zan }</label></a>
  31. </p>
  32. <div id="saydiv${m.id}" class="c_say" style="display:none;">
  33. <textarea id="text${m.id }" placeholder="请输入回复..."></textarea>
  34. <c:if test="${empty loginUser}">
  35. <p class="c_text">
  36. 注册成为会员后方可回复
  37. <a class="c_rigister" href="/user/register/user_register!userRegister.ds">注册</a>
  38. <span class="c_line">|</span>
  39. <a class="c_login" href="#login">登录</a>
  40. </p>
  41. </c:if>
  42.  
  43. <c:if test="${!empty loginUser}">
  44. <input id="btn_${m.id}" title="${m.websiteMessage.id}" type="button" value="回复" myId="${m.id }" onclick="huifu(this);" />
  45. </c:if>
  46. </div>
  47. //重点。。。留言的读取
  48. <c:forEach items="${map}" var="h"> //map 集合
  49. <c:forEach items="${h.key}" var="va"> //判断键值
  50. <c:if test="${va eq m.id}"> //判断键值和id号是否相等
  51. <c:forEach items="${h.value}" var="hvalue"> //相等取值
  52.  
  53. <div class="c_reply" id="re_${hvalue.id }">
  54. <dl>
  55. <dt>
  56. <img src="/pages/foreground/images/user_image.jpg">
  57. </dt>
  58. <dd>
  59. <p>
  60. <span class="c_name">${hvalue.uid.uname }</span>
  61. <span class="c_time">
  62. ${hvalue.time }
  63. </span>
  64. <!-- <span class="c_jb"><a href="#">举报</a></span> -->
  65. </p>
  66. <p class="comment_user">
  67. ${hvalue.leave }
  68. </p>
  69. </dd>
  70. </dl>
  71. </div>
  72. </c:forEach>
  73. </c:if>
  74. </c:forEach>
  75. </c:forEach>
  76.  
  77. </dd>
  78.  
  79. </dl>
  80. </c:forEach>
  81.  
  82. </div>
  83. <c:if test="${!empty msgList.list}">
  84. <div class="page_num">
  85. <ul>
  86.  
  87. <c:if test="${msgList.pageCount > 1 && msgList.pageNumber != msgList.pageCount}">
  88. <a href="/user/site_message!cgIndex.ds?type=${type}&id=${id}&msgnum=1">首页</a>
  89. <a href="/user/site_message!cgIndex.ds?type=${type}&id=${id}&msgnum=${msgList.pageNumber-1}">上一页</a>
  90. <a href="/user/site_message!cgIndex.ds?type=${type}&id=${id}&msgnum=${msgList.pageNumber+1}">下一页</a>
  91. <a href="/user/site_message!cgIndex.ds?type=${type}&id=${id}&msgnum=${msgList.pageCount}">末页</a>
  92. </c:if>
  93. <c:if test="${msgList.pageNumber eq msgList.pageCount}">
  94. <a href="/user/site_message!cgIndex.ds?type=${type}&id=${id}&msgnum=1">首页</a>
  95. <a href="/user/site_message!cgIndex.ds?type=${type}&id=${id}&msgnum=${webMessages.pageNumber-1}">上一页</a>
  96. </c:if>
  97. 第${msgList.pageNumber }页,共${msgList.pageCount }页
  98.  
  99. </ul>
  100. </div>
  101. </c:if>
  102. </div>
  103.  
  104. <div class="reply_input">
  105. <textarea id="leaveText" placeholder="请控制提问字数在300字以内..."></textarea>
  106. <c:if test="${empty loginUser}">
  107. <p class="c_text">
  108. 注册成为会员后方可回复
  109. <a class="c_rigister" href="#">注册</a>
  110. <span class="c_line">|</span>
  111. <a class="c_login" href="#">登录</a>
  112. </p>
  113. </c:if>
  114. <c:if test="${!empty loginUser}">
  115. <input class="reply_confirm" type="button" value="确定" onclick="pl();" style="overflow: hidden; " />
  116. </c:if>
  117.  
  118. </div>
  119. </DIV>
  120. <script type="text/javascript">
  121. //获取当地时间
  122. var date=new Date();
  123. var y=date.getFullYear();
  124. var m=(date.getMonth()+1);
  125. var d=date.getDate();
  126. var h=date.getHours();
  127. var mm=date.getMinutes();
  128. var s=date.getSeconds();
  129. var ss=date.getMilliseconds();
  130. var da=y+'-'+m+'-'+d+' '+h+':'+mm+':'+s+'.'+ss;
  131. var arrContent={};//存类容,
  132. var islogin="${loginUser}1";//是否登陆 1 是登陆,否则没有登陆
  133. //回复按钮,显示输入框
  134. function a_huifu(a){
  135. if(arrContent["textId"]){
  136. var cf=confirm('是否离开?');
  137. if(cf==false){
  138. return ;
  139. }
  140. $(arrContent['textId']).val('');
  141. $(arrContent['textId']).attr({style:"display:none;"});
  142. }
  143.  
  144. var lybmsgId=$(a).attr('title');//留言板
  145. var contentId='#saydiv'+lybmsgId;
  146. var contentState=$(contentId).attr('style');
  147. var text="#text"+lybmsgId;//输入的内容的ID
  148.  
  149. if(contentState=='display:none;'){
  150. $(contentId).attr({style:"display:block;"});
  151. }
  152. else if(contentState=='display:block;'){
  153. if(islogin!='1'&&$(text).html().length>0){
  154. arrContent['textId']=text;
  155. var cf=confirm('是否离开?');
  156. if(cf==true){
  157. //表示,已经登陆了,离开
  158. $(text).val('');//清空留言
  159. $(contentId).attr({style:"display:none;"});
  160. }
  161. }else{
  162. $(text).val('');//清空留言
  163. $(contentId).attr({style:"display:none;"});
  164. }
  165. }
  166. }
  167. //确定回复
  168. function huifu(btn){
  169. var btnId=$(btn).attr('id');
  170. var parentId=btnId.substring(4,btnId.length);
  171. var msgId=$(btn).attr('title');
  172. var leave=$('#text'+parentId).val();
  173. $.post('/user/site_message!saveReplay.ds',
  174. {"parentId":parentId,"type":2,"msgId":msgId,"leave":leave}
  175. ,function(data){
  176. alert(data.message);
  177. if(data.success){
  178. var text="#text"+parentId;//输入的内容的ID
  179. var contentId='#saydiv'+parentId;
  180. $(text).val('');//清空留言
  181. $(contentId).attr({style:"display:none;"});
  182. addHtml(btn,leave);
  183. }
  184. });
  185. }
  186. //回复成功后添加html留言
  187. function addHtml(a,leave){
  188. var html="<div class='c_reply' id='re_${hvalue.id }'><dl><dt><img src='/pages/foreground/images/user_image.jpg'></dt>";
  189. html+="<dd><p><span class='c_name'>${hvalue.uid.uname }${loginUser.uname}</span><span class='c_time'>${hvalue.time }"+da+"</span></p>";
  190. html+=" <p class='comment_user'>${hvalue.leave }"+leave+"</p></dd></dl><div>";
  191. $(a).parent().parent().append(html);
  192. }
  193. //赞
  194. function a_zan(a){
  195. var zanId=$(a).attr('title');
  196. var zanBtnId='#labzan_'+zanId;
  197. var count =$(zanBtnId).html();
  198. $.post('/user/site_message!zan.ds',{"id":zanId},function(data){
  199. if(data.success){
  200. $(zanBtnId).html(parseInt(count)+1);
  201. }
  202. });
  203. }
  204. //最下面的评论
  205. function pl(){
  206. var leave=$('#leaveText').val().trim();
  207. if(leave.length==0){
  208. alert('请输入文字');
  209. return ;
  210. }
  211. if(leave.length>300){
  212. alert('不能大于300字');
  213. return;
  214. }
  215. var plId="${websiteMessage.id}";
  216.  
  217. $.post('/user/site_message!savePL.ds',
  218. {"msgId":plId,"leave":leave}
  219. ,function(data){
  220. alert(data.message);
  221. if(data.success){
  222. var id=data.savePlId;
  223. var html="<dl ><dt><img src='/pages/foreground/images/user_image.jpg'></dt><dd><p><span class='c_name'>${loginUser.uname}</span>";
  224. html+="<span class='c_time'> "+da+"</span></p>";
  225. html+="<p class='comment_user'>"+leave+" </p>";
  226. html+="<p class='comment_share'><a onclick='a_huifu(this);' title='"+id+"' href='javascript:void(0);'>回复</a>";
  227. html+="<a onclick='a_zan(this);' title='"+id+"' href='javascript:void(0);'>赞(<label id='labzan_"+id+"'>0</label>)";
  228. html+="</a></p><div id='saydiv"+id+"' class='c_say' style='display:none;'><textarea id='text"+id+"' placeholder='请输入回复...'></textarea>";
  229. html+="<input id='btn_"+id+"' type='button' onclick='huifu(this);' myid='"+id+"' value='回复' title='"+plId+"'></div></dd></dl>";
  230. $('#PLmain').append(html);
  231. $('#leaveText').val('');
  232. }
  233. });
  234. }
  235. </script>
  1. @Resource
  2. private MessageBordService messageBordService;
  3. @Resource
  4. private WebsiteMessageService websiteMessageService;
  5. private int pagenum=1;//页数
  6. private int msgnum=1;//留言页数
  7. private Long msgId;//公告的Id
  8. private Long parentId;//回复留言的Id
  9. private Integer type;//1: 留言 (评论)2:回复
  10. private String leave;//留言(评论)//回复
  11.  
  12. private MessageBord msg=null;
  13. @UnLogin
  14. public String index(){
  15. List<WebsiteMessage> webMessages = websiteMessageService.listLateWebMessage(CommonVar.WEBSITEMESSAGE,type);
  16. setAttribute("webMessages", webMessages);
  17. WebsiteMessage websiteMessage = websiteMessageService.get(id);
  18. setAttribute("websiteMessage", websiteMessage);
  19. setAttribute("type", type);
  20. return "index";
  21. }
  22. /*if(value==1)
  23. return '媒体报道';
  24. if(value==2)
  25. return '网站公告';
  26. if(value==3)
  27. return '成功案例';
  28. if(value==4)
  29. return '站内信息';*/
  30. @UnLogin
  31. public String cgIndex(){
  32. Pager pager=new Pager();
  33. pager.setPageNumber(pagenum);
  34. pager.setPageSize(8);
  35. DetachedCriteria de=DetachedCriteria.forClass(WebsiteMessage.class);
  36. de.add(Restrictions.eq("isDelete", 0));
  37. de.add(Restrictions.eq("mtype", type));
  38. Pager list = websiteMessageService.findByPager(pager, de);
  39. setAttribute("webMessages", list);
  40. if(null!=id){
  41. WebsiteMessage websiteMessage = websiteMessageService.get(id);
  42. setAttribute("websiteMessage", websiteMessage);
  43. Set<SystemNoticeWeb> systemNoticeWebs = websiteMessage.getSystemNoticeWebs();
  44. setAttribute("notices", systemNoticeWebs);
  45. }
  46. setAttribute("type", type);
  47. setAttribute("pagenum", pagenum);
  48. //获取5留言(评论)
  49. if(null!=id){
  50. Pager msgPager=new Pager();
  51. msgPager.setPageNumber(msgnum);
  52. msgPager.setPageSize(4);//每页四条数据
  53. DetachedCriteria msgde=DetachedCriteria.forClass(MessageBord.class);
  54. msgde.add(Restrictions.eq("websiteMessage",websiteMessageService.get(id)));
  55. msgde.add(Restrictions.eq("type", 1));
  56. msgde.add(Restrictions.isNull("parentId"));
  57. Pager msgList = messageBordService.findByPager(msgPager, msgde);
  58. List<MessageBord> mbs = msgList.getList();
  59. if(mbs!=null&&mbs.size()>=1){
  60. setAttribute("id", id);
  61. setAttribute("msgList", msgList);//用于取页数
  62. setAttribute("plNum", mbs.size());//评论条数
  63. getReplay(mbs,id);
  64. }
  65. Long totalNumber = websiteMessageService.getTotalNumber(Long.valueOf(id));
  66. setAttribute("plNum", totalNumber);
  67. }
  68. return "index";
  69. }
  70. //所有的回复
  71. private void getReplay(List<MessageBord> mbs,Long msgId){
  72. //取出每条评论的回复存入集合
  73. Map<String,List<MessageBord>>map=new HashMap<String,List<MessageBord>>();
  74. for (MessageBord messageBord : mbs) {
  75. //获取每条评论
  76. DetachedCriteria hude=DetachedCriteria.forClass(MessageBord.class);
  77. hude.add(Restrictions.eq("websiteMessage", websiteMessageService.get(id)));
  78. hude.add(Restrictions.eq("type", 2));
  79. hude.add(Restrictions.eq("parentId", messageBord.getId()));
  80. List<MessageBord> pls = messageBordService.getL(hude, -1);
  81. String key=messageBord.getId().toString();
  82. map.put(key, pls);
  83. setAttribute("map", map);
  84. }
  85. }
  86. //保存回复
  87. public void saveReplay(){
  88. try{
  89. msg=new MessageBord();
  90. LoanUser user=(LoanUser) getSession("loginUser");
  91. msg.setLeave(this.leave);
  92. msg.setParentId(this.parentId);
  93. msg.setType(this.type);
  94. msg.setUid(user);
  95. msg.setTime(new Date());
  96. msg.setZan(0);
  97. msg.setWebsiteMessage(new WebsiteMessage(msgId));
  98. messageBordService.save(msg);
  99. super.ajaxJson(DbRecord.jsonShowInfo(true, "留言成功"));
  100. }catch (Exception e) {
  101. super.ajaxJson(DbRecord.jsonShowInfo(false, "留言失败"));
  102. }
  103. }
  104. //保存评论
  105. public void savePL(){
  106. if(this.leave.length()>300){
  107. super.ajaxJson(DbRecord.jsonShowInfo(false, "不能大于300字"));
  108. return;
  109. }
  110. JSONObject json=new JSONObject();
  111. try{
  112. LoanUser user=(LoanUser) getSession("loginUser");
  113. msg=new MessageBord();
  114. msg.setLeave(this.leave);
  115. msg.setTime(new Date());
  116. msg.setType(1);
  117. msg.setUid(user);
  118. msg.setWebsiteMessage(new WebsiteMessage(msgId));
  119. msg.setZan(0);
  120. Long save = messageBordService.save(msg);
  121. json.put("success", true);
  122. json.put("message", "评论成功");
  123. json.put("savePlId", save);
  124. super.ajaxJson(json.toString());
  125. }catch (Exception e) {
  126. super.ajaxJson(DbRecord.jsonShowInfo(false, "评论失败"));
  127. }
  128. }
  129. //赞
  130. public void zan(){
  131. try{
  132. if(null!=id){
  133. MessageBord messageBord = messageBordService.get(id);
  134. messageBord.setZan((messageBord.getZan()+1));
  135. messageBordService.update(messageBord);
  136. super.ajaxJson(DbRecord.jsonShowInfo(true, "赞成功"));
  137. }
  138. }catch (Exception e) {
  139. super.ajaxJson(DbRecord.jsonShowInfo(false, "赞失败"));
  140. }
  141. }

html的显示消息和留言板的更多相关文章

  1. 【weiphp微信开发教程】留言板插件开发详解

    基于weiphp框架的留言板插件教程: 1.功能分析 传统的留言板应该具有发布留言.查看留言.回复留言.管理留言等功能,本教程开发的是最基本的留言板,仅包含发布留言和查看留言两个功能,根据功能用boo ...

  2. (详细)php实现留言板---会话控制-----------2017-05-08

    要实现留言功能,发送者和接受者必不可少,其次就是留言时间留言内容. 要实现的功能: 1.登录者只能查看自己和所有人的信息,并能够给好友留言 2.留言板页面,好友采取下拉列表,当留言信息为空时,显示提示 ...

  3. 用php(session)实现留言板功能----2017-05-09

    要实现留言功能,发送者和接受者必不可少,其次就是留言时间留言内容. 要实现的功能: 1.登录者只能查看自己和所有人的信息,并能够给好友留言 2.留言板页面,好友采取下拉列表,当留言信息为空时,显示提示 ...

  4. flask实战-留言板-Web程序开发流程

    Web程序开发流程 在实际的开发中,一个Web程序的开发过程要设计多个角色,比如客户(提出需求).项目经理(决定需求的实现方式).开发者(实现需求)等,在这里我们假设自己是一个人全职开发.一般来说一个 ...

  5. php......留言板

    部门内部留言板 一.语言和环境 实现语言 PHP 二.要求: 本软件是作为部门内员工之间留言及发送消息使用. 系统必须通过口令验证,登录进入.方法是从数据库内取出用户姓名和口令的数据进行校验. 用户管 ...

  6. dd——留言板再加验证码功能

    1.找到后台-核心-频道模型-自定义表单 2.然后点击增加新的自定义表单 diyid 这个,不管他,默认就好 自定义表单名称 这个的话,比如你要加个留言板还是投诉建议?写上去呗 数据表  这个不要碰, ...

  7. html的留言板制作(js)

    这次留言板运用到了最基础的localstorage的本地存储,展现的效果主要有: 1.编写留言2.留言前可以编辑自己的留言昵称.不足之处: 1.未能做出我喜欢的类似于网易的叠楼功能. 2.未能显示评论 ...

  8. 11月8日PHP练习《留言板》

    一.要求 二.示例页面 三.网页代码及网页显示 1.denglu.php  登录页面 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Tran ...

  9. LigerUi框架+jquery+ajax无刷新留言板系统的实现

    前些天发布了LigerUi框架的增.删.改代码,一堆代码真的也没一张图片.有的网友推荐上图,所有今天把涉及到这个框架的开源的留言板共享给大家.在修改的过程中可能有些不足的地方希望大家拍砖. 因为留言板 ...

随机推荐

  1. _.remove的用法

    var array = [1, 2, 3, 4]; var evens = _.remove(array, function(n) { return n % 2 == 0; }); console.l ...

  2. zyUpload界面绝佳、体验超棒的HTML5上传插件

    一.为毛线开发它 经过了两个星期做出了两个基于HTML5的多文件上传插件,之前在做网站的时候用到文件上传这一个功能,但是大多说都是基于Flash的,正好最近HTML5很火,而且渐渐壮大起来,感觉搞前端 ...

  3. twisted的一些代码

    之前用swoole(1.7.19)写的一段程序在数据量大的时候存在内存泄漏,改为twisted(15.4)实现,自测无误,记录如下(两者cpu占用率90%时吞吐rps能从120提升到1000). #! ...

  4. 解决URL请求中的中文乱码问题

    解决URL提交中文出现乱码有两种办法:1.请求端的中字符有encodeURI进行一次转码,如: var url="/getUser?name="+encodeURI(name);服 ...

  5. ubuntu14.04下手动安装JDK + eclipse + Pydev

    说明:本文在root用户下进行,如不是root用户命令前加sodu 一.手动安装JDK 1.下载JDK 从官网http://www.oracle.com/technetwork/java/javase ...

  6. URL伪静态设置 (apache2.4)

    ` ` 1.修改apche主配置文件 主要是 #LoadModule rewrite_module modules/mod_rewrite.so 改为 LoadModule rewrite_modul ...

  7. 基于MDK的ARM-GCC开发环境建立及新唐M0的HID类设备的C++开发

    一,下载安装测试arm-none-eabi-gcc编译工具链 1,查看arm-none-eabi-gcc编译工具版本        打开网页:https://sourcery.mentor.com/G ...

  8. Swagger+Spring MVC框架学习分享

    [html] view plain copy 最近参与公司接口编写,Android和IOS端都要调用这些接口,需要对接调试,如果没有一个接口文档,管理接口,别人用了接口,也不知道接口怎么用,接口上有什 ...

  9. CH Round #57 - Story of the OI Class 凯撒密码

    很有意思的一道题目 考场上想的是HASH成一个整数,把末位asicc码值*1,依次乘*10,得到一个整数,然后利用等差性.唯一性快排Nlogn乱搞的 证明如下: 对于明文abcde 密文 bcdef ...

  10. hdoj 1114 Piggy-Bank(完全背包+dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1114 思路分析:该问题要求为多重背包问题,使用多重背包的解法即可:假设dp[v]表示容量为v的背包中能 ...