資料字典的設計--5.資料的儲存,資料字典設計--5
儲存分為兩種:
1.沒有選擇類型列表,添加新的類型名稱,此時儲存表示新增一種資料類型:
2.選擇下拉框中資料類型,類型名稱不可見,此時儲存表示在已有的資料類型上進行編輯和修改:
其中,類型名稱可見與否是通過js代碼實現的:
1.在dictionaryIndex.jsp中添加saveDict()
當點擊【儲存】時,執行以下代碼:
function saveDict(){ if(document.Form1.keyword.value=="jerrynew"){ if(Trim(document.Form1.keywordname.value)==""){ alert("請輸入類型名稱"); return false; } var allkeywords= document.Form1.keyword; for(var i=0;i<allkeywords.length;i++){ if(allkeywords[i].value==Trim(document.Form1.keywordname.value)){ alert("已存在此類型名稱,請重新輸入"); return false; } } //設定標誌符“new”表示新增一種資料類型 document.Form2.keywordname.value=document.Form1.keywordname.value; document.Form2.typeflag.value="new"; }else{ //設定標識符“add”表示在已有的資料類型上進行編輯和修改 document.Form2.keywordname.value=document.Form1.keyword.value; document.Form2.typeflag.value="add"; } var tbl=document.getElementById("dictTbl"); for (i=1;i<tbl.rows.length;i++){ var name = tbl.rows[i].cells[1].getElementsByTagName("input")[0].value; if(Trim(name)==""){ alert("名稱不可為空!"); return false; } } for(k=1;k<=tbl.rows.length-2;k++) { for(m=k+1;m<=tbl.rows.length-1;m++) { var name1 = tbl.rows[k].cells[1].getElementsByTagName("input")[0].value; var name2 = tbl.rows[m].cells[1].getElementsByTagName("input")[0].value; if(name1 == name2){ alert("名稱不能相同!"); return false; } } } document.Form2.action="${pageContext.request.contextPath }/system/elecSystemDDLAction_save.do"; document.Form2.submit(); }
作用:1.判斷輸入類型名稱是否為空白,是否與資料庫已有的類型名稱重複;
2.判斷表單中內容是否為空白,是否有重複
其中定義keywordname和typeflag為隱藏輸入欄位:
<input type="hidden" name="keywordname" ><input type="hidden" name="typeflag" >
2.在ElecSystemDDL中增加:
/**非持久化javabean的屬性*/ //資料類型 private String keywordname; /** * 用來判斷執行到業務標識 * add:此時【儲存】表示在已有的類型上進行編輯和修改 * new:此時【儲存】表示新增一種資料類型 */ private String typeflag; //資料項目的值,數組 private String [] itemname; public String getKeywordname() { return keywordname; } public void setKeywordname(String keywordname) { this.keywordname = keywordname; } public String getTypeflag() { return typeflag; } 3.在ElecSystemDDLAction中增加save()方法:
/** * @Name: save * @Description: 儲存表單資料到資料庫 * @Parameters: 無 * @Return: String:重新導向到system/dictionaryIndex.jsp再查詢 */ public String save(){ elecSystemDDLService.saveSystemDDL(elecSystemDDL); return "save"; }4.修改struts.xml:
<!-- 資料字典 --><action name="elecSystemDDLAction_*" class="elecSystemDDLAction" method="{1}"> <result name="home">/WEB-INF/page/system/dictionaryIndex.jsp</result> <result name="edit">/WEB-INF/page/system/dictionaryEdit.jsp</result> <result name="save" type="redirectAction"> <param name="actionName">elecSystemDDLAction_home.do</param> </result> </action>5.IElecSystemDDLService中添加方法的聲明
void saveSystemDDL(ElecSystemDDL elecSystemDDL);
6.實作類別ElecSystemDDLServiceImpl中重寫:
/** * @Name: saveSystemDDL * @Description: 儲存資料到資料字典 * @Parameters: ElecSystemDDL:VO對象 * @Return: 無 */ @Override @Transactional(isolation=Isolation.DEFAULT,propagation=Propagation.REQUIRED,readOnly=false) public void saveSystemDDL(ElecSystemDDL elecSystemDDL) { //1:擷取頁面傳遞的參數 //資料名稱 String keyword = elecSystemDDL.getKeywordname(); //標識符 String typeflag = elecSystemDDL.getTypeflag(); //資料項目的值 String[] itemname = elecSystemDDL.getItemname(); //2:擷取判斷商務邏輯的標識(new和add) //如果typeflag==new:新增一種新的資料類型 if("new".equals(typeflag)){ //* 遍曆頁面傳遞過來的資料項目的名稱,組織PO對象,執行儲存 this.saveDDL(keyword,itemname); } //如果typeflag==add:在已有的資料類型基礎上進行編輯和修改 else{ //* 使用資料類型,查詢該資料類型對應的list,刪除list List<ElecSystemDDL> list = this.findSystemDDLListByKeyword(keyword); elecSystemDDLDao.deleteObjectByCollection(list); //* 遍曆頁面傳遞過來的資料項目的名稱,組織PO對象,執行儲存 this.saveDDL(keyword,itemname); } } private void saveDDL(String keyword, String[] itemname) { if(itemname!=null&&itemname.length>0){ //* 遍曆頁面傳遞過來的資料項目的名稱,組織PO對象,執行儲存 for(int i=0;i<itemname.length;i++){ ElecSystemDDL systemDDL = new ElecSystemDDL(); systemDDL.setDdlCode(i+1); systemDDL.setDdlName(itemname[i]); systemDDL.setKeyword(keyword); elecSystemDDLDao.save(systemDDL); } }}