1.
1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> 3 4 5 <servlet> 6 <servlet-name>dwr-invoker</servlet-name> 7 <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class> 8 <init-param> 9 <param-name>debug</param-name> 10 <param-value>true</param-value> 11 </init-param> 12 <!-- 在服务器端启用反向Ajax --> 13 <init-param> 14 <param-name>activeReverseAjaxEnabled</param-name> 15 <param-value>true</param-value> 16 </init-param> 17 <!-- 以下两个配置主要兼容tomcat7对dwr的支持 --> 18 <init-param> 19 <param-name>crossDomainSessionSecurity</param-name> 20 <param-value>false</param-value> 21 </init-param> 22 <init-param> 23 <param-name>allowScriptTagRemoting</param-name> 24 <param-value>true</param-value> 25 </init-param> 26 <load-on-startup>1</load-on-startup> 27 </servlet> 28 <servlet-mapping> 29 <servlet-name>dwr-invoker</servlet-name> 30 <url-pattern>/dwr/*</url-pattern> 31 </servlet-mapping> 32 </web-app>
2.
1 //发布公告 2 function publish(){ 3 //获取页面上name='id' 并且被选中的checkbox 至少一条公告 4 var checkedElts = $(":checkbox[name='id']:checked"); 5 if(checkedElts.length==0){ 6 $("#message").text("请至少选择一条公告进行发布"); 7 }else{ 8 //发送ajax请求,发布公告 9 //announcementIds= 111&announcementIds=222announcementIds=333 10 var sendData = "announcementIds="; 11 var idArray = []; 12 $.each(checkedElts,function(i,n){ 13 idArray.push(n.value); 14 }); 15 sendData += idArray.join("&announcementIds="); 16 //alert(sendData); 17 $.ajax({ 18 url:"${pageContext.request.contextPath}/announcement/publish.action", 19 type:"post", 20 data:sendData, 21 beforeSend:function(){ 22 $("#message").text("正在发布公告请稍后..."); 23 return true; 24 }, 25 success:function(jsonObject){ 26 if(jsonObject.success){ 27 $("#message").text("发布成功"); 28 displayData(0); 29 }else{ 30 $("#message").text("发布失败"); 31 } 32 } 33 }); 34 } 35 } 36 37 38 <input name="button6" type="button" value="发布" onclick="publish();"/>
1 package com.bjpowernode.egov.web.action; 2 3 import java.util.ArrayList; 4 import java.util.HashMap; 5 import java.util.List; 6 import java.util.Map; 7 8 import javax.annotation.Resource; 9 10 import org.apache.struts2.convention.annotation.Action; 11 import org.apache.struts2.convention.annotation.Namespace; 12 import org.apache.struts2.convention.annotation.Result; 13 import org.springframework.context.annotation.Scope; 14 import org.springframework.stereotype.Controller; 15 16 import com.bjpowernode.egov.Constant; 17 import com.bjpowernode.egov.domain.Announcement; 18 import com.bjpowernode.egov.domain.User; 19 import com.bjpowernode.egov.service.AnnouncementService; 20 import com.bjpowernode.egov.util.DateUtil; 21 import com.bjpowernode.egov.vo.PaginationVO; 22 23 @Controller 24 @Namespace("/announcement") 25 @Scope("prototype") 26 public class AnnouncementAction extends BaseAction { 27 28 @Resource(name="announcementService") 29 private AnnouncementService announcementService; 30 31 private Announcement announcement; 32 33 private Integer pageNo; 34 private Integer pageSize; 35 private String title; 36 private String publisherName; 37 38 private String[] announcementIds; 39 40 public void setAnnouncementIds(String[] announcementIds) { 41 this.announcementIds = announcementIds; 42 } 43 44 public void setPageNo(Integer pageNo) { 45 this.pageNo = pageNo; 46 } 47 48 public void setPageSize(Integer pageSize) { 49 this.pageSize = pageSize; 50 } 51 52 public void setTitle(String title) { 53 this.title = title; 54 } 55 56 public void setPublisherName(String publisherName) { 57 this.publisherName = publisherName; 58 } 59 60 public Announcement getAnnouncement() { 61 return announcement; 62 } 63 64 public void setAnnouncement(Announcement announcement) { 65 this.announcement = announcement; 66 } 67 68 69 70 71 @Action("publish") 72 public String publish()throws Exception{ 73 Map<String,Object> jsonMap = new HashMap<String,Object>(); 74 try { 75 announcementService.publish(announcementIds); 76 jsonMap.put("success", true); 77 } catch (Exception e) { 78 e.printStackTrace(); 79 jsonMap.put("success", false); 80 } 81 return jsonOut(jsonMap); 82 } 83
6
1 @Override 2 public void publish(String[] announcementIds) { 3 for (String announcementId : announcementIds) { 4 Announcement announcement = announcementDao.getById(announcementId); 5 announcement.setStatus("已发布"); 6 announcement.setPublishTime(DateUtil.getSystemTime()); 7 //推送 8 AjaxPushUtil.push(announcement.getId(), announcement.getTitle()); 9 } 10 }
1 package com.bjpowernode.egov.util; 2 3 import org.directwebremoting.Browser; 4 import org.directwebremoting.ScriptSessions; 5 import org.directwebremoting.ServerContextFactory; 6 7 public class AjaxPushUtil { 8 private AjaxPushUtil() { 9 } 10 11 public static void push(final String id,final String title) { 12 // 推向的页面 (目前我们要调用的是reverseAjax.html中的函数) 13 String page = ServerContextFactory.get().getContextPath()+ "/down.action"; 14 15 // 使用一个新的线程完成推送的任务 16 Browser.withPage(page, new Runnable() { 17 public void run() { 18 ScriptSessions.addScript("showText('"+id+"','"+title+"')"); 19 } 20 }); 21 } 22 }
1 <%@ page language="java" contentType="text/html; charset=UTF-8"%> 2 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 3 <html> 4 <head> 5 <base href="${pageContext.request.scheme}://${pageContext.request.serverName }:${pageContext.request.serverPort }${pageContext.request.contextPath }/"> 6 <meta http-equiv="content-type" content="text/html; charset=UTF-8"> 7 <style type="text/css"> 8 body { 9 margin-left: 0px; 10 margin-top: 0px; 11 margin-right: 0px; 12 margin-bottom: 0px; 13 } 14 15 .STYLE1 { 16 color: #767a7a; 17 font-size: 12px; 18 } 19 </style> 20 <link href="jquery/testSlider/jQuery.textSlider.css" rel="stylesheet" type="text/css"/> 21 <script type="text/javascript" src="jquery/jquery-1.7.2.min.js"></script> 22 <script type="text/javascript" src="jquery/testSlider/jQuery.textSlider.js"></script> 23 <script type="text/javascript" src="dwr/engine.js"></script> 24 <script type="text/javascript"> 25 //在客户端启用反向ajax 26 //方法来启动该页面的ReverseAjax功能。这时候默认采用的将是comet的方式来完成页面内容的推送 27 dwr.engine.setActiveReverseAjax(true); 28 $(function(){ 29 $("#scrollDiv").textSlider({line:1,speed:100,timer:1000}); 30 }); 31 //该js函数会被java代码调用 32 function showText(id,title){ 33 $("#announcementList").append("<li><a href='javascript:void(0)' style='color: gray;text-decoration: none'>"+title+"</a></li>"); 34 } 35 </script> 36 </head> 37 <body> 38 <table width="100%" border="0" cellspacing="0" cellpadding="0"> 39 <tr> 40 <td width="22" height="30"> 41 <img src="images/main_38.gif" width="22" height="30" /> 42 </td> 43 <td background="images/main_40.gif"> 44 <table width="100%" border="0" cellspacing="0" cellpadding="0"> 45 <tr> 46 <td width="200" height="30"> 47 48 </td> 49 <td></td> 50 <td width="300"> 51 <div align="right" class="STYLE1" id="scrollDiv"> 52 <div class="scrollText"> 53 <ul id="announcementList"> 54 </ul> 55 </div> 56 </div> 57 </td> 58 </tr> 59 </table> 60 </td> 61 <td width="28"> 62 <img src="images/main_43.gif" width="28" height="30" /> 63 </td> 64 </tr> 65 </table> 66 </body> 67 </html>