//说什么都没有例子直观,这是个比较简单的日历日程,附件为效果图、代码效果和需要引用的js与css文件
package com.kinth.oa.daily.action;
import java.io.IOException;
import java.net.URLDecoder;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.json.JSONArray;
import net.sf.json.JsonConfig;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import com.gdcn.bpaf.common.base.BaseStrutsAction;
import com.gdcn.bpaf.common.helper.BeanUtil;
import com.gdcn.bpaf.common.helper.WebHelper;
import com.gdcn.bpaf.common.taglib.SplitPage;
import com.gdcn.bpaf.security.model.LogonVO;
import com.kinth.common.helper.GUIDHelper;
import com.kinth.common.helper.PagerList;
import com.kinth.oa.daily.action.form.PerScheduleCategoryForm;
import com.kinth.oa.daily.action.form.PerScheduleForm;
import com.kinth.oa.daily.model.PerSchedule;
import com.kinth.oa.daily.model.PerScheduleCategory;
import com.kinth.oa.daily.service.IPerScheduleService;
import com.kinth.oa.official.helper.JsonDateValueProcessor;
/**
* <p>Title 个人日程action</p>
* <p>Copyright: Copyright (c) 2012</p>
* <p>@date : 2012-10-1
*/
public class PerScheduleAction extends BaseStrutsAction{
private IPerScheduleService perscheduleService;
/**
* 以月历模式查看个人日程
* @param mapping
* @param form
* @param request
* @param response
* @return ActionForward
*/
public ActionForward toJson(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws IOException {
response.setCharacterEncoding("utf-8");
String userId=WebHelper.getLogon(request).getLogonid();
String userName=WebHelper.getLogon(request).getUsername();
String hql = "FROM PerSchedule a where a.userId = "+"'"+userId+"'";
List<PerSchedule> list=perscheduleService.queryPerSchedules(hql);
//移除同一天的日程事件
for (int i=0;i<list.size();i++) {
if(request.getParameter("index")!=null){
for (int j = list.size() - 1; j > i; j--) {
if (list.get(j).getStartTime().toString().substring(0, 10).equals(list.get(i).getStartTime().toString().substring(0, 10))) {
list.remove(j);
}
}
}
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String str = list.get(i).getStartTime().toString().substring(0, 19);
try {
list.get(i).setStartTime(sf.parse(str));
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
JSONArray json = JSONArray.fromObject(list);
String resultStr = json.toString();
try {
response.getWriter().write(resultStr);
response.getWriter().flush();
response.getWriter().close();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@SuppressWarnings("unchecked")
protected void writeJSON(HttpServletRequest request,HttpServletResponse response,Map map)throws Exception{
//获得json的配置
JsonConfig config=new JsonConfig();
//设置javabean中日期转换时的格式
config.registerJsonValueProcessor(Date.class,
new JsonDateValueProcessor("yyyy-MM-dd HH:mm:ss"));
Object o = JSONArray.fromObject(map,config);
String result = o==null?"":o.toString();
response.setContentType("application/json;charset=UTF-8");
response.setCharacterEncoding("utf-8");
response.setHeader("Charset", "utf-8");
response.setHeader("Cache-Control", "no-cache");
response.getWriter().print(result);
}
public IPerScheduleService getPerscheduleService() {
return perscheduleService;
}
public void setPerscheduleService(IPerScheduleService perscheduleService) {
this.perscheduleService = perscheduleService;
}
}
<%@ page contentType="text/html; charset=GBK" language="java"%> <%@ page isELIgnored="false"%> <link href="<%=baseURL%>/frame/css/style.css" rel="stylesheet" type="text/css" /> <html> <head> <title>日常业务-个人日程</title> <title>日程</title> <link type="text/css" rel="stylesheet" href="<%=baseURL %>/kinth/officialCommon/css/jquery.ui.all.css"/> <link rel='stylesheet' href='<%=baseURL%>/frame/css/fullcalendar.css' /> <link rel='stylesheet' href='<%=baseURL%>/frame/css/fullcalendar.print.css' media='print' /> <script type="text/javascript" src="<%=baseURL %>/kinth/officialCommon/js/jquery.js"></script> <script type="text/javascript" src="<%=baseURL %>/kinth/officialCommon/js/jquery-ui.custom.js"></script> <script type="text/javascript" src="<%=baseURL%>/frame/JS/fullcalendar.min.js"></script> <style type='text/css'> body { margin-left: 200px; text-align: center; font-size: 18px; font-family: "Lucida Grande",Helvetica,Arial,Verdana,sans-serif; } #calendar { width: 900px; height: 800px; margin: 0 auto; } </style> <script type="text/javascript"> $(document).ready(function() { var date = new Date(); var d = date.getDate(); var m = date.getMonth(); var y = date.getFullYear(); $('#calendar').fullCalendar({ header: { left: 'prev,next today', center: 'title', right: 'month,agendaWeek,agendaDay' }, theme:true, monthNames: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"], monthNamesShort: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"], dayNames: ["周日", "周一", "周二", "周三", "周四", "周五", "周六"], dayNamesShort: ["周日", "周一", "周二", "周三", "周四", "周五", "周六"], today: ["今天"], buttonText: { today: '今天', month: '月', week: '周', day: '日' }, editable: false, events:function(start, end, callback) { //在日历中的天显示相应日程 var urlR = baseURL+"/toJsonForCalandar.do";//后台查询日程,返回json格式 $.ajax({ url: urlR, cache:false, success:function(data) { var events = []; var info = eval(data); for (var i = 0; i < info.length; i++) { var ev = info[i]; var title = ev.topic; var x; if(ev.allDay=='true'){ x=true; }else{ x=false; } var evtstart=formatJson(ev.startTime.time); var evtend=formatJson(ev.endTime.time); events.push({ //设置在日历中的天显示相应日程的样式 title:title, start:evtstart, end:evtend, backgroundColor:'#34c9df', allDay:x }); } callback(events); } }) },eventClick: function(calEvent, jsEvent, view) { //点击日程事件 window.location.href=baseURL+"/kinth/daily/perschedule/perscheduleByCalMain.jsp"; },dayClick:function(date, allDay, jsEvent, view){ //点击天事件 //$(this).css({color: "red", background: "blue" }); //$(this).removeClass("ui-widget-content"); window.location.href=baseURL+"/listCategory.do?appType=HDOA_GRRC"; } }); }); </script> <script type="text/javascript"> //格式化时间函数,此函数为了处理json格式中带date类型数据的 function formatJson(time) { var jsonDate=new Date(parseInt(time)); var result = jsonDate.format("yyyy-MM-dd hh:mm:ss"); return result; } Date.prototype.format = function(format){ var o = { "M+" : this.getMonth()+1, //month "d+" : this.getDate(), //day "h+" : this.getHours(), //hour "m+" : this.getMinutes(), //minute "s+" : this.getSeconds(), //second "q+" : Math.floor((this.getMonth()+3)/3), //quarter "S" : this.getMilliseconds() //millisecond } if(/(y+)/.test(format)) format=format.replace(RegExp.$1,(this.getFullYear()+"").substr(4 - RegExp.$1.length)); for(var k in o) if(new RegExp("("+ k +")").test(format)) format = format.replace(RegExp.$1,RegExp.$1.length==1 ? o[k] : ("00"+ o[k]).substr((""+ o[k]).length)); return format; } </script> </head> <body style="margin-left: 40px;margin-top: 0px;margin-right: 4px;margin-bottom: 4px;"> <div id="content" > <div id="calendar" style="margin:3em 0;font-size:13px" class="fc"> </div> </div> </body> </html>