重构授课班时间安排模块代码
生活随笔
收集整理的這篇文章主要介紹了
重构授课班时间安排模块代码
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.很多的模塊除了首頁index.jsp主要還有兩個界面,一個添加,另一個是編輯頁面,授課班時間安排也是如此。之前的做法是做了兩個頁面,操作方面,兩者基本上都是獨立的,因為感覺兩個頁面不好整合在一起,但是這樣肯定是不好的,兩者都是commit操作,應該是可以整合起來的,所以,我今天就來改改吧,記錄下來,以備以后查看
界面:
add.jsp
<%@page contentType="text/html; charset=gbk"%> <%@ taglib uri="http://www.binarystar.com" prefix="BS"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><title>添加授課班時間安排</title><link href="<%=request.getContextPath()%>/bsweb/css/bs.css"rel="stylesheet" type="text/css"><link href="<%=request.getContextPath()%>/common/css/wdlab.css"rel="stylesheet" type="text/css" /><SCRIPT language="javascript"src="<%=request.getContextPath()%>/bsjs/bs.js" type="text/javascript"></SCRIPT><SCRIPT type="text/javascript" language="javascript"src="<%=request.getContextPath()%>/common/script/labclass.js"></SCRIPT><SCRIPT type="text/javascript" language="javascript"src="<%=request.getContextPath()%>/bsweb/js/bsdate.js"></SCRIPT><script type="text/javascript"src="<%=request.getContextPath()%>/common/script/wdlab.js"></script><script type="text/javascript">var tObj={};tObj=thisDlg.inObj;function iniPage() {document.getElementById("label_itemName").innerHTML=tObj.itemName;document.getElementById("label_className").innerHTML=tObj.className;thisDlg.endFun();}function AddClassTime() {var fobj={};fobj.type="add";if (confirm("是否提交數據?")) {doRefresh("CLASSTIME", "addClassTime", true, "", "&type="+fobj.type,"ClassTimeCommitRet");}}function ClassTimeCommitRet(retObj, data) {if (data == "T") {var rObj={};rObj.data=data;thisDlg.returnObj = rObj;thisDlg.closeDlg();} else {alert(data);//thisDlg.closeDlg();}}</script></head><body scroll="no" onload="iniPage();" class="body"><form method="POST" name="frmBusiness" action=""><table class="" style="width: 100%;" border="0" cellpadding="0"cellspacing="0"><BS:text name="add_itemid" type="hidden" value="" /><BS:text name="add_classid" type="hidden" value="" /><tr class="my_tdheight" align="left"><td><nobr> *實驗項目名稱:</nobr></td><td style="width: 100%;"><label id="label_itemName"></label></td></tr><tr class="my_tdheight" align="left"><td><nobr> *授課班名稱:</nobr></td><td style="width: 100%;"><label id="label_className"></label><%--<BS:label name="label_className"></BS:label>--%></td></tr><tr class="my_tdheight" align="left"><td><nobr> 指導老師:</nobr></td><td style="width: 100%;"><BS:label name="label_teacherName"></BS:label></td></tr><tr class="my_tdheight" align="left"><td><nobr> 應選人數:</nobr></td><td style="width: 100%;"><BS:label name="label_sumNum"></BS:label></td></tr><tr class="my_tdheight" align="left"><td><nobr> 未選人數:</nobr></td><td style="width: 100%;"><BS:label name="label_noNum"></BS:label></td></tr><tr class="my_tdheight" align="left"><td><nobr> 參考時間:</nobr></td><td style="width: 100%;"><BS:label name="kkSTime"></BS:label>——<BS:label name="kkETime"></BS:label></td></tr><tr class="my_tdheight" align="left"><td><nobr> 授課班開始時間:</nobr></td><td style="width: 100%;"><BS:date name="classSDate" showTime="false"></BS:date><BS:select name="classSTime" style="width:120px;"></BS:select></td></tr><tr class="my_tdheight" align="left"><td><nobr> 授課班結束時間:</nobr></td><td style="width: 100%;"><BS:date name="classEDate" showTime="false"></BS:date><BS:select name="classETime" style="width:120px;"></BS:select></td></tr><tr style="height: 50px;" valign="bottom"><td colspan="2" align="left"><input type="button" value="" class="mybt_commit"onclick="AddClassTime()" /></td></tr></table></form></body> </html>edit.jsp
<%@page contentType="text/html; charset=gbk"%> <%@ taglib uri="http://www.binarystar.com" prefix="BS"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><title>編輯授課班時間安排</title><link href="<%=request.getContextPath()%>/bsweb/css/bs.css"rel="stylesheet" type="text/css"><link href="<%=request.getContextPath()%>/common/css/wdlab.css"rel="stylesheet" type="text/css" /><SCRIPT type="text/javascript" language="javascript"src="<%=request.getContextPath()%>/bsjs/bs.js" type="text/javascript"></SCRIPT><SCRIPT type="text/javascript" language="javascript"src="<%=request.getContextPath()%>/common/script/labclass.js"></SCRIPT><SCRIPT type="text/javascript" language="javascript"src="<%=request.getContextPath()%>/bsweb/js/bsdate.js"></SCRIPT><script type="text/javascript" language="javascript"src="<%=request.getContextPath()%>/common/script/wdlab.js"></script><script type="text/javascript">var tObj = {};tObj = thisDlg.inObj;var today = new Date();var lastDate=null;function iniPage() {document.getElementById("label_itemName").innerHTML = tObj.itemName;document.getElementById("label_className").innerHTML = tObj.className;thisDlg.endFun();}function EditClassTimeCommit() {var fobj = {};fobj.type = "edit";//如果過期則不可編輯var eDate=null;eDate = tObj.eDate;lastDate = new Date(eDate.replace(/-/g, "/"));if (Date.parse(lastDate) < Date.parse(this.today)) {alert("該時間段已過期,無法進行編輯");thisDlg.closeDlg();} else if (confirm("是否保存數據?")) {doRefresh("CLASSTIME", "updateClassTime", true, "", "&type="+ fobj.type, "ClassTimeCommitRet");}}function ClassTimeCommitRet(retObj, data) {if (data == "T") {var rObj = {};rObj.data = data;thisDlg.returnObj = rObj;thisDlg.closeDlg();} else {alert(data);}} </script></head><body scroll="no" onload="iniPage();" class="body"><form method="POST" name="frmBusiness" action=""><BS:text name="schId" type="hidden" value="" /><table class="" style="width: 100%;" border="0" cellpadding="0"cellspacing="0"><tr class="my_tdheight" align="left"><td><nobr> *實驗項目名稱:</nobr></td><td style="width: 100%;"><label id="label_itemName"></label></td></tr><tr class="my_tdheight" align="left"><td><nobr> *授課班名稱:</nobr></td><td style="width: 100%;"><label id="label_className"></label></td></tr><tr class="my_tdheight" align="left"><td><nobr> 指導老師:</nobr></td><td style="width: 100%;"><BS:label name="label_teacherName_edit"></BS:label></td></tr><tr class="my_tdheight" align="left"><td><nobr> 應選人數:</nobr></td><td style="width: 100%;"><BS:label name="label_sumNum_edit"></BS:label></td></tr><tr class="my_tdheight" align="left"><td><nobr> 未選人數:</nobr></td><td style="width: 100%;"><BS:label name="label_noNum_edit"></BS:label></td></tr><tr class="my_tdheight" align="left"><td><nobr> 參考時間:</nobr></td><td style="width: 100%;"><BS:label name="kkSTime"></BS:label>——<BS:label name="kkETime"></BS:label></td></tr><tr class="my_tdheight" align="left"><td><nobr> 授課班開始時間:</nobr></td><td style="width: 100%;"><BS:date name="classSDate_edit" showTime="false"></BS:date><BS:select name="classSTime_edit" style="width:120px;"></BS:select></td></tr><tr class="my_tdheight" align="left"><td><nobr> 授課班結束時間:</nobr></td><td style="width: 100%;"><BS:date name="classEDate_edit" showTime="false"></BS:date><BS:select name="classETime_edit" style="width:120px;"></BS:select></td></tr><tr style="height: 50px;" valign="bottom"><td colspan="2" align="left"><input type="button" value="" class="mybt_commit"onclick="EditClassTimeCommit()" /></td></tr></table></form></body> </html>除了js部分是不同的,因為處理的業務是不同,其他的頁面顯示的內容基本上是相同的,只是某些控件設置的值不一樣而已,一下是初始化頁面的方法 /** * <p> * 方法名稱: do_AddClassTimeIni * </p> * <p> * 方法功能描述: 添加授課班時間安排前初始化頁面 * </p> * <p> * 輸入參數描述: BSObject m_bs:BinaryStar框架參數集。 * </p> * <p> * 輸出參數描述: BSObject:BinaryStar框架參數集。 * </p> */public BSObject do_AddClassTimeIni(BSObject m_bs) throws Exception {m_bs.setCurPage("kkmang/classtime/add.jsp");String itemId = (String) m_bs.getPrivateMap().get("itemId");String classId = (String) m_bs.getPrivateMap().get("classId");int stusum = 0, choseNum = 0;ClassPojo oneClass = null;SqlExecute sqlHelper = new SqlExecute();try {BSClassTimeDBMang ctDB = new BSClassTimeDBMang(sqlHelper, m_bs);stusum = ctDB.getClassStuSum(classId);// 查到授課班信息和人數信息choseNum = ctDB.getClassChoose(classId, itemId);oneClass = ctDB.getClassInfo(classId);} catch (Exception e) {e.printStackTrace();throw e;} finally{sqlHelper.close();}if (oneClass != null) {m_bs.setPrivateValue("label_teacherName", oneClass.getClassTeacher().getName());} else {m_bs.setPrivateValue("label_teacherName", "未知");}m_bs.setPrivateValue("add_itemid", itemId);m_bs.setPrivateValue("add_classid", classId);m_bs.setPrivateValue("label_sumNum", String.valueOf(stusum));// 第二個一定要是string才行m_bs.setPrivateValue("label_noNum", String.valueOf(stusum - choseNum));//設置開始日期是今天Calendar thisDate = Calendar.getInstance();//這里是得到今天m_bs.setPrivateValue("classSDate", sdf.format(thisDate.getTime()));//設置結束日期是今天的一周之后thisDate.add(Calendar.DATE, 7);//今天的七天之后m_bs.setPrivateValue("classEDate", sdf.format(thisDate.getTime()));m_bs.setPrivateValue("kkSTime", WDLabStatic.term.getLabClassStart().substring(0, 10));m_bs.setPrivateValue("kkETime", WDLabStatic.term.getLabClassEnd().substring(0, 10));// 得到時間段ArrayList<TimeSetPojo> timeSetList = WDLabStatic.timeSetList;TimeSetPojo onePojo = null;// 設置時間段到下拉框VBSSelect classSTime = (VBSSelect) m_bs.getTagMap().get("classSTime");VBSSelect classETime = (VBSSelect) m_bs.getTagMap().get("classETime");if (classSTime == null || classETime == null) {classSTime = new VBSSelect("classSTime");classETime = new VBSSelect("classETime");classSTime.setStyle("width:100px;");classETime.setStyle("width:100px;");for (int i = 0, size = timeSetList.size(); i < size; i++) {// 設置實驗系統的時間段到下拉框中onePojo = timeSetList.get(i);classSTime.setOption(String.valueOf(i),onePojo.getTimeFormated(), 0);classETime.setOption(String.valueOf(i),onePojo.getTimeFormated(), 0);}m_bs.setTagValue(classSTime);m_bs.setTagValue(classETime);}m_bs.setPrivateValue("classSTime", "0");m_bs.setPrivateValue("classETime", "4");return m_bs;}/** * <p> * 方法名稱: do_EditClassTimeIni * </p> * <p> * 方法功能描述: 編輯授課班時間安排前初始化頁面 * </p> * <p> * 輸入參數描述: BSObject m_bs:BinaryStar框架參數集。 * </p> * <p> * 輸出參數描述: BSObject:BinaryStar框架參數集。 * </p> */public BSObject do_EditClassTimeIni(BSObject m_bs) throws Exception {m_bs.setCurPage("kkmang/classtime/edit.jsp");String schId = (String) m_bs.getPrivateMap().get("schId");int stusum = 0, choseNum = 0;ClassPojo oneClass = null;ClassTimePojo classTimePojo = null;SqlExecute sqlHelper = new SqlExecute();try {BSClassTimeDBMang ctDB = new BSClassTimeDBMang(sqlHelper, m_bs);classTimePojo = ctDB.getScheduleInfo(schId);// 查詢到當前點擊的授課班時間安排的信息stusum = ctDB.getClassStuSum(classTimePojo.getOneClass().getClassId());choseNum = ctDB.getClassChoose(classTimePojo.getOneClass().getClassId(), classTimePojo.getOneItem().getItemId());oneClass = ctDB.getClassInfo(classTimePojo.getOneClass().getClassId());} catch (Exception e) {e.printStackTrace();throw e;} finally{sqlHelper.close();}if (oneClass != null) {m_bs.setPrivateValue("label_teacherName_edit", oneClass.getClassTeacher().getName());} else {m_bs.setPrivateValue("label_teacherName_edit", "未知");}m_bs.setPrivateValue("schId", schId);m_bs.setPrivateValue("label_sumNum_edit", String.valueOf(stusum));m_bs.setPrivateValue("label_noNum_edit",String.valueOf(stusum - choseNum));m_bs.setPrivateValue("kkSTime", WDLabStatic.term.getLabClassStart().substring(0, 10));m_bs.setPrivateValue("kkETime", WDLabStatic.term.getLabClassEnd().substring(0, 10));m_bs.setPrivateValue("classSDate_edit", classTimePojo.getsDate().substring(0, 10));m_bs.setPrivateValue("classEDate_edit", classTimePojo.geteDate().substring(0, 10));// 得到時間段ArrayList<TimeSetPojo> timeSetList = WDLabStatic.timeSetList;TimeSetPojo onePojo = null;// 設置時間段到下拉框VBSSelect classSTime_edit = (VBSSelect) m_bs.getTagMap().get("classSTime_edit");VBSSelect classETime_edit = (VBSSelect) m_bs.getTagMap().get("classETime_edit");if (classSTime_edit == null || classETime_edit == null) {// 設置實驗系統的時間段到下拉框中classSTime_edit = new VBSSelect("classSTime_edit");classETime_edit = new VBSSelect("classETime_edit");for (int i = 0, size = timeSetList.size(); i < size; i++) {onePojo = timeSetList.get(i);classSTime_edit.setOption(String.valueOf(i),onePojo.getTimeFormated(), 0);classETime_edit.setOption(String.valueOf(i),onePojo.getTimeFormated(), 0);}m_bs.setTagValue(classSTime_edit);m_bs.setTagValue(classETime_edit);}// 設置當前授課班時間安排的時間m_bs.setPrivateValue("classSTime_edit", classTimePojo.getsTime().substring(4));m_bs.setPrivateValue("classETime_edit", classTimePojo.geteTime().substring(4));return m_bs;} 至于添加和更新的方法,也是有很多相同的內容 /** * <p> * 方法名稱: do_addClassTime * </p> * <p> * 方法功能描述: 添加授課班時間安排 * </p> * <p> * 輸入參數描述: BSObject m_bs:BinaryStar框架參數集。 * </p> * <p> * 輸出參數描述: BSObject:BinaryStar框架參數集。 * </p> */public BSObject do_addClassTime(BSObject m_bs) throws Exception {String retStr = "操作失敗,請稍后再試";int count = 0;ClassTimePojo oneClassTime = new ClassTimePojo();oneClassTime.getOneItem().setItemId((String) m_bs.getPrivateMap().get("add_itemid"));oneClassTime.getOneClass().setClassId((String) m_bs.getPrivateMap().get("add_classid"));oneClassTime.setsDate((String) m_bs.getPrivateMap().get("classSDate"));oneClassTime.seteDate((String) m_bs.getPrivateMap().get("classEDate"));oneClassTime.setsTime("csu_"+ (String) m_bs.getPrivateMap().get("classSTime"));oneClassTime.seteTime("csu_"+ (String) m_bs.getPrivateMap().get("classETime"));// 通過前臺得到并設置一個授課班時間安排SqlExecute sqlHelper = new SqlExecute();ArrayList<ClassTimePojo> list = new ArrayList<ClassTimePojo>();try {sqlHelper.setAutoCommit(false);BSClassTimeDBMang ctDB = new BSClassTimeDBMang(sqlHelper, m_bs);list = ctDB.getLabClassTimeList(((VBSSelect) m_bs.getTagMap().get("LabClass_LabList")).getCurSelectValue());// 得到實驗室的所有授課班時間安排retStr = _validateClassTime(oneClassTime, list, "");if (retStr.equals("OK")) {// 只有可以插入時才進行插入操作count = ctDB.intsertClassTime(oneClassTime);if (count > 0) {retStr = "T";} else {retStr = "沒有更新任何數據!";}}sqlHelper.commit();} catch (Exception e) {sqlHelper.rollback();e.printStackTrace();throw e;}m_bs.setRetrunObj(retStr);return m_bs;}/** * <p> * 方法名稱: do_updateClassTime * </p> * <p> * 方法功能描述: 更新授課班時間安排 * </p> * <p> * 輸入參數描述: BSObject m_bs:BinaryStar框架參數集。 * </p> * <p> * 輸出參數描述: BSObject:BinaryStar框架參數集。 * </p> */public BSObject do_updateClassTime(BSObject m_bs) throws Exception {VBSSelect LabClass_LabList = (VBSSelect) m_bs.getTagMap().get("LabClass_LabList");String labId = LabClass_LabList.getCurSelectValue();m_bs.setCurPage("kkmang/classtime/edit.jsp");String retStr = "操作失敗,請稍后再試";int count = 0;String schId = (String) m_bs.getPrivateMap().get("schId");ClassTimePojo oneClassTime = new ClassTimePojo();oneClassTime.setId(schId);oneClassTime.setsDate((String) m_bs.getPrivateMap().get("classSDate_edit"));oneClassTime.seteDate((String) m_bs.getPrivateMap().get("classEDate_edit"));oneClassTime.setsTime("csu_"+ (String) m_bs.getPrivateMap().get("classSTime_edit"));oneClassTime.seteTime("csu_"+ (String) m_bs.getPrivateMap().get("classETime_edit"));SqlExecute sqlHelper = new SqlExecute();try {sqlHelper.setAutoCommit(false);BSClassTimeDBMang ctDB = new BSClassTimeDBMang(sqlHelper, m_bs);ArrayList<ClassTimePojo> list = ctDB.getLabClassTimeList(labId);// 得到實驗室的所有授課班時間安排retStr = _validateClassTime(oneClassTime, list, schId);if (retStr.equals("OK")) {// 只有可以更新時才進行更新操作count = ctDB.updateClassTime(oneClassTime);if (count > 0) {retStr = "T";ClassTimePojo beforePojo = ctDB.getScheduleInfo(schId);// 得到修改前的信息int result = this._delLabClassByClassTime(beforePojo,oneClassTime, labId, ctDB);} else {retStr = "沒有更新任何數據!";}}sqlHelper.commit();} catch (Exception e) {sqlHelper.rollback();e.printStackTrace();throw e;}m_bs.setRetrunObj(retStr);return m_bs;} 之前的處理流程是這樣子的:add:添加按鈕關聯了一個按鍵事件 寫在labclass.js中 this.addClassTime = function(i, j) {var oneItem = this.itList[i];var item_id = "item_" + oneItem.itemId;var btList = eval(this.name + ".classMap." + item_id);var oneClass = btList[j];var fromObj = {};fromObj.type="add";fromObj.className = oneClass.className;fromObj.itemName = oneItem.itemName;fromObj.itemId = oneItem.itemId;fromObj.classId = oneClass.classId;var p = getParent();p.openParentDlg("ADDCLASSTIME", "授課班時間安排", 380, 360, fromObj,"CLASSTIME", "AddClassTimeIni", "&type="+fromObj.type+"&itemId=" + oneItem.itemId+ "&classId=" + oneClass.classId, window, true, true,"ClassTimeRet", "");}; edit: this._onClick = function(oneLc) {event.cancelBubble = true;if (oneLc != null) {var fromObj = {};fromObj.type="edit";fromObj.eDate=oneLc.eDate;fromObj.className = oneLc.oneClass.className;fromObj.itemName = oneLc.oneItem.itemName;fromObj.schId = oneLc.id;var p = getParent();p.openParentDlg("EDITCLASSTIME", "編輯授課班時間安排", 380, 360, fromObj,"CLASSTIME", "EditClassTimeIni", "&type="+fromObj.type+"&schId=" + fromObj.schId,window, true, true, "ClassTimeRet", "");}}; 這個方法給下一個頁面 add.jsp/edit.jsp 傳遞了一個對象fromObj,里面存放了一個很重要的屬性type,它是用來區別編輯操作的!還要注意的就是回調函數 ClassTimeRet 寫在 index.jsp 中這個回調函數是當新打開的窗體關閉了時觸發的,這里就是當返回的值是“T”時,就重新刷新頁面 function ClassTimeRet(p_RetData, p_InData) {if (p_RetData.data == "T") {doRefresh("CLASSTIME", "getLabClassDate", true, "", "", "");}}同時還有一個回調函數,當點擊了新的頁面(添加或者編輯)就會觸發的方法
添加的:
function AddClassTime() {var fobj={};fobj.type="add";if (confirm("是否提交數據?")) {doRefresh("CLASSTIME", "addClassTime", true, "","&type="+fobj.type,"ClassTimeCommitRet","");}}編輯的:
function EditClassTimeCommit() {var fobj = {};fobj.type = "edit";//如果過期則不可編輯var eDate=null;eDate = tObj.eDate;lastDate = new Date(eDate.replace(/-/g, "/"));if (Date.parse(lastDate) < Date.parse(this.today)) {alert("該時間段已過期,無法進行編輯");thisDlg.closeDlg();} else if (confirm("是否保存數據?")) {doRefresh("CLASSTIME", "updateClassTime", true, "", "&type="+ fobj.type, "ClassTimeCommitRet");}}他們調用同一個回調函數
function ClassTimeCommitRet(retObj, data) {if (data == "T") {var rObj = {};rObj.data = data;thisDlg.returnObj = rObj;thisDlg.closeDlg();} else {alert(data);}} 當返回的值是“T” 時,就構造一個新的對象rObj并作為這個窗體的返回值返回給上一個窗體(也就是index.jsp),之后就關閉當前的窗體?
重構的步驟:第一步:整合add.jsp和edit.jsp,新建一個jsp:commit.jsp,界面基本上借用add.jsp,但是要整合edit.jsp中其他的內容,包括js方法以及不同的隱藏域,同時修改提交按鈕觸發的js方法commit.jsp<%@page contentType="text/html; charset=gbk"%> <%@ taglib uri="http://www.binarystar.com" prefix="BS"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><title>添加授課班時間安排</title><link href="<%=request.getContextPath()%>/bsweb/css/bs.css"rel="stylesheet" type="text/css"><link href="<%=request.getContextPath()%>/common/css/wdlab.css"rel="stylesheet" type="text/css" /><SCRIPT language="javascript"src="<%=request.getContextPath()%>/bsjs/bs.js" type="text/javascript"></SCRIPT><SCRIPT type="text/javascript" language="javascript"src="<%=request.getContextPath()%>/common/script/labclass.js"></SCRIPT><SCRIPT type="text/javascript" language="javascript"src="<%=request.getContextPath()%>/bsweb/js/bsdate.js"></SCRIPT><script type="text/javascript"src="<%=request.getContextPath()%>/common/script/wdlab.js"></script><script type="text/javascript">var tObj={};var lastDate=null;tObj=thisDlg.inObj;var today = new Date();function iniPage() {document.getElementById("label_itemName").innerHTML=tObj.itemName;document.getElementById("label_className").innerHTML=tObj.className;thisDlg.endFun();}function CommitClassTime(){var fObj={};fObj.type=tObj.type;if(fObj.type=="add"){if (confirm("是否提交數據?")) {doRefresh("CLASSTIME", "addClassTime", true, "","&type="+fObj.type,"ClassTimeCommitRet","");}}else if(fObj.type == "edit"){var eDate=null;eDate = tObj.eDate;lastDate = new Date(eDate.replace(/-/g, "/"));if (Date.parse(lastDate) < Date.parse(this.today)) {alert("該時間段已過期,無法進行編輯");thisDlg.closeDlg();} else if (confirm("是否保存數據?")) {doRefresh("CLASSTIME", "updateClassTime", true, "", "&type="+ fObj.type, "ClassTimeCommitRet");}}}function ClassTimeCommitRet(retObj, data) {if (data!=null && data == "T") {var rObj={};rObj.data=data;thisDlg.returnObj = rObj;thisDlg.closeDlg();} else {alert(data);//thisDlg.closeDlg();}}</script></head><body scroll="no" onload="iniPage();" class="body"><form method="POST" name="frmBusiness" action=""><BS:text name="add_itemid" type="hidden" value="" /><BS:text name="add_classid" type="hidden" value="" /><BS:text name="schId" type="hidden" value="" /><table class="" style="width: 100%;" border="0" cellpadding="0"cellspacing="0"><tr class="my_tdheight" align="left"><td><nobr> 實驗項目名稱:</nobr></td><td style="width: 100%;"><label id="label_itemName"></label></td></tr><tr class="my_tdheight" align="left"><td><nobr> 授課班名稱:</nobr></td><td style="width: 100%;"><label id="label_className"></label><%--<BS:label name="label_className"></BS:label>--%></td></tr><tr class="my_tdheight" align="left"><td><nobr> 指導老師:</nobr></td><td style="width: 100%;"><BS:label name="label_teacherName"></BS:label></td></tr><tr class="my_tdheight" align="left"><td><nobr> 應選人數:</nobr></td><td style="width: 100%;"><BS:label name="label_sumNum"></BS:label></td></tr><tr class="my_tdheight" align="left"><td><nobr> 未選人數:</nobr></td><td style="width: 100%;"><BS:label name="label_noNum"></BS:label></td></tr><tr class="my_tdheight" align="left"><td><nobr> 參考時間:</nobr></td><td style="width: 100%;"><BS:label name="kkSTime"></BS:label>~<BS:label name="kkETime"></BS:label></td></tr><tr class="my_tdheight" align="left"><td><nobr> 授課班開始時間:</nobr></td><td style="width: 100%;"><BS:date name="classSDate" showTime="false"></BS:date><BS:select name="classSTime" style="width:120px;"></BS:select></td></tr><tr class="my_tdheight" align="left"><td><nobr> 授課班結束時間:</nobr></td><td style="width: 100%;"><BS:date name="classEDate" showTime="false"></BS:date><BS:select name="classETime" style="width:120px;"></BS:select></td></tr><tr style="height: 50px;" valign="bottom"><td colspan="2" align="left"><input type="button" value="" class="mybt_commit"onclick="CommitClassTime()" /></td></tr></table></form></body> </html> ?第二步:整合頁面初始化操作,利用labclass.js方法傳過來的對象的type屬性,就可以區別哪些時候是添加要做的,哪些時候是編輯要做的 /** * <p> * 方法名稱: do_CommitClassTimeIni * </p> * <p> * 方法功能描述: 編輯授課班時間安排前初始化頁面 * </p> * <p> * 輸入參數描述: BSObject m_bs:BinaryStar框架參數集。 * </p> * <p> * 輸出參數描述: BSObject:BinaryStar框架參數集。 * </p> */public BSObject do_CommitClassTimeIni(BSObject m_bs) throws Exception {String type = (String) m_bs.getPrivateMap().get("type");String itemId = "";String classId = "";String schId="";int stusum = 0, choseNum = 0;ClassPojo oneClass = null;ClassTimePojo classTimePojo = null;if (type.equals("add")) {m_bs.setCurPage("kkmang/classtime/commit.jsp");itemId = (String) m_bs.getPrivateMap().get("itemId");classId = (String) m_bs.getPrivateMap().get("classId");m_bs.setPrivateValue("add_itemid", itemId);m_bs.setPrivateValue("add_classid", classId);} else {m_bs.setCurPage("kkmang/classtime/commit.jsp");schId=(String) m_bs.getPrivateMap().get("schId");m_bs.setPrivateValue("schId", schId);}SqlExecute sqlHelper = new SqlExecute();try {BSClassTimeDBMang ctDB = new BSClassTimeDBMang(sqlHelper, m_bs);if (type.equals("edit")) {classTimePojo = ctDB.getScheduleInfo(schId);// 查詢到當前點擊的授課班時間安排的信息classId = classTimePojo.getOneClass().getClassId();itemId = classTimePojo.getOneItem().getItemId();}stusum = ctDB.getClassStuSum(classId);// 查到授課班信息和人數信息choseNum = ctDB.getClassChoose(classId, itemId);oneClass = ctDB.getClassInfo(classId);} catch (Exception e) {e.printStackTrace();throw e;} finally {sqlHelper.close();}//設置指導老師姓名if (oneClass != null) {m_bs.setPrivateValue("label_teacherName", oneClass.getClassTeacher().getName());} else {m_bs.setPrivateValue("label_teacherName", "未知");}//設置人數m_bs.setPrivateValue("label_sumNum", String.valueOf(stusum));m_bs.setPrivateValue("label_noNum",String.valueOf(stusum - choseNum));//設置參考時間m_bs.setPrivateValue("kkSTime", WDLabStatic.term.getLabClassStart().substring(0, 10));m_bs.setPrivateValue("kkETime", WDLabStatic.term.getLabClassEnd().substring(0, 10));// 得到時間段ArrayList<TimeSetPojo> timeSetList = WDLabStatic.timeSetList;TimeSetPojo onePojo = null;// 設置時間段到下拉框VBSSelect classSTime = (VBSSelect) m_bs.getTagMap().get("classSTime");VBSSelect classETime = (VBSSelect) m_bs.getTagMap().get("classETime");if (classSTime == null || classETime == null) {classSTime = new VBSSelect("classSTime");classETime = new VBSSelect("classETime");classSTime.setStyle("width:100px;");classETime.setStyle("width:100px;");for (int i = 0, size = timeSetList.size(); i < size; i++) {// 設置實驗系統的時間段到下拉框中onePojo = timeSetList.get(i);classSTime.setOption(String.valueOf(i),onePojo.getTimeFormated(), 0);classETime.setOption(String.valueOf(i),onePojo.getTimeFormated(), 0);}m_bs.setTagValue(classSTime);m_bs.setTagValue(classETime);}if(type.equals("edit")){//設置開始和結束日期m_bs.setPrivateValue("classSDate", classTimePojo.getsDate().substring(0, 10));m_bs.setPrivateValue("classEDate", classTimePojo.geteDate().substring(0, 10));// 設置當前授課班時間安排的時間m_bs.setPrivateValue("classSTime", classTimePojo.getsTime().substring(4));m_bs.setPrivateValue("classETime", classTimePojo.geteTime().substring(4));}else{//設置開始日期是今天Calendar thisDate = Calendar.getInstance();//這里是得到今天m_bs.setPrivateValue("classSDate", sdf.format(thisDate.getTime()));//設置結束日期是今天的一周之后thisDate.add(Calendar.DATE, 7);//今天的七天之后m_bs.setPrivateValue("classEDate", sdf.format(thisDate.getTime()));//設置時間是第一天的第一節到一周后的那天的晚上第一節m_bs.setPrivateValue("classSTime", "0");m_bs.setPrivateValue("classETime", "4");}return m_bs;} 可以看到的就是在三個不同的地方都是使用了判斷type是add還是edit,不能和在一起是因為操作是有一定的順序的?第三步:修改 labclass.js this._onClick = function(oneLc) {event.cancelBubble = true;if (oneLc != null) {var fromObj = {};fromObj.type="edit";fromObj.eDate=oneLc.eDate;fromObj.className = oneLc.oneClass.className;fromObj.itemName = oneLc.oneItem.itemName;fromObj.schId = oneLc.id;var p = getParent();p.openParentDlg("EDITCLASSTIME", "編輯授課班時間安排", 380, 360, fromObj,"CLASSTIME", "CommitClassTimeIni", "&type="+fromObj.type+"&schId=" + fromObj.schId,window, true, true, "ClassTimeRet", "");}};修改調用的后臺方法就可以了
?
第四步:整合處理方法addClassTime和editClassTime,根據的也是前臺傳過來的type屬性值
/** * <p> * 方法名稱: do_commitClassTime * </p> * <p> * 方法功能描述: 更新授課班時間安排 * </p> * <p> * 輸入參數描述: BSObject m_bs:BinaryStar框架參數集。 * </p> * <p> * 輸出參數描述: BSObject:BinaryStar框架參數集。 * </p> */public BSObject do_commitClassTime(BSObject m_bs) throws Exception {int count = 0;String retStr = "操作失敗,請稍后再試";//得到操作的類別,授課班時間安排id和實驗室idString type = (String)m_bs.getPrivateMap().get("type");String schId = (String) m_bs.getPrivateMap().get("schId");String labId = ((VBSSelect) m_bs.getTagMap().get("LabClass_LabList")).getCurSelectValue();// 通過前臺得到并設置一個授課班時間安排ClassTimePojo oneClassTime = new ClassTimePojo();if(type.equals("edit")){oneClassTime.setId(schId);}else if(type.equals("add")){oneClassTime.getOneItem().setItemId((String) m_bs.getPrivateMap().get("add_itemid"));oneClassTime.getOneClass().setClassId((String) m_bs.getPrivateMap().get("add_classid"));}oneClassTime.setsDate((String) m_bs.getPrivateMap().get("classSDate"));oneClassTime.seteDate((String) m_bs.getPrivateMap().get("classEDate"));oneClassTime.setsTime("csu_" + (String) m_bs.getPrivateMap().get("classSTime"));oneClassTime.seteTime("csu_" + (String) m_bs.getPrivateMap().get("classETime"));SqlExecute sqlHelper = new SqlExecute();ArrayList<ClassTimePojo> list = null;try {sqlHelper.setAutoCommit(false);BSClassTimeDBMang ctDB = new BSClassTimeDBMang(sqlHelper, m_bs);list = ctDB.getLabClassTimeList(labId);// 得到實驗室的所有授課班時間安排 if (type.equals("add")) {retStr = _validateClassTime(oneClassTime, list, "");if (retStr.equals("OK")) {// 只有可以插入時才進行插入操作count = ctDB.intsertClassTime(oneClassTime);if (count > 0) {retStr = "T";} else {retStr = "沒有更新任何數據!";}}} else {retStr = _validateClassTime(oneClassTime, list, schId);if (retStr.equals("OK")) {// 只有可以更新時才進行更新操作count = ctDB.updateClassTime(oneClassTime);if (count > 0) {retStr = "T";ClassTimePojo beforePojo = ctDB.getScheduleInfo(schId);// 得到修改前的信息this._delLabClassByClassTime(beforePojo, oneClassTime, labId, ctDB);} else {retStr = "沒有更新任何數據!";}}}sqlHelper.commit();} catch (Exception e) {sqlHelper.rollback();e.printStackTrace();throw e;}m_bs.setRetrunObj(retStr);return m_bs;} 至此,我重新測試了一遍,功能和以前一樣,但是代碼明顯少了很多啊,呵呵呵,重構!總結
以上是生活随笔為你收集整理的重构授课班时间安排模块代码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在cds学到的(非技术)
- 下一篇: 持续集成之“依赖管理”