如此展示:
数据库:
jsp:
dictionaryIndex.jsp:
<%@ page language="java" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <HTML> <HEAD> <title>系统设置</title> <LINK href="/page/system/Style.css" type="text/css" rel="stylesheet"> <script language="javascript" src="/page/system/function.js"></script> <script type="text/javascript" src="/page/system/pub.js"></script> <script type="text/javascript" src="/js/jquery-3.3.1.js"></script> <script> var ctx = "${ctx}"; </script> <script language="javascript"> function changetype(){ /**没有选择类型列表的值,显示类型名称的文本框,作用是:此时表示的业务逻辑是在【保存】的时候,新增一种数据类型*/ if(document.Form1.keyword.value=="jerrynew"){ var textStr="<input type=\"text\" name=\"keywordname\" maxlength=\"50\" size=\"24\"> "; document.getElementById("newtypename").innerHTML="类型名称:"; document.getElementById("newddlText").innerHTML=textStr; Pub.submitActionWithForm('Form2','/dictionary/dictionaryEdit','Form1'); } /**选择类型列表的值,隐藏类型名称的文本框,作用是:此时表示的业务逻辑是在【保存】的时候,在已有的数据类型的基础上进行修改和编辑*/ else{ var textStr=""; document.getElementById("newtypename").innerHTML=""; document.getElementById("newddlText").innerHTML=textStr; Pub.submitActionWithForm('Form2','/dictionary/dictionaryEdit','Form1'); } } 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; } } document.Form2.keywordname.value=document.Form1.keywordname.value; document.Form2.typeflag.value="new"; } /**选择数据类型,保存:在已有数据类型的基础上进行修改和编辑*/ else{ 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="/dictionary/saveDictionary"; document.Form2.submit(); } function insertRows(){ //获取表格对象 var tb1 = $("#dictTbl"); var tempRow = $("#dictTbl tr").length;//获取表格的行数 var $tdNum = $("<td align='center'></td>"); $tdNum.html(tempRow); var $tdName = $("<td align='center'></td>"); $tdName.html("<input name=\"itemname\" type=\"text\" id=\""+tempRow+"\" size=\"45\" maxlength=25>"); var $tdDel = $("<td align='center'></td>"); $tdDel.html("<a href='javascript:delTableRow(\""+tempRow+"\")'>删除</a>"); // 创建tr,将3个td放置到tr中 var $tr = $("<tr></tr>"); $tr.append($tdNum); $tr.append($tdName); $tr.append($tdDel); //在表格的最后追加新增的tr tb1.append($tr); } function delTableRow(rowNum){ //改变行号和删除的行号 var tb1 = $("#dictTbl"); var tempRow = $("#dictTbl tr").length;//获取表格的行数 if (tempRow >rowNum){ //获取删除行的id指定的对象,例如:<input name=\"itemname\" type=\"text\" id=\""+tempRow+"\" size=\"45\" maxlength=25> $("#"+rowNum).parent().parent().remove(); //加1表示寻找下一个id,目的是将后面tr的格式向上移动 for (i=(parseInt(rowNum)+1);i<tempRow;i++){ //将i-1的值赋值给编号 $("#"+i).parent().prev().html(i-1); //将i-1的值赋值给超链接的删除 $("#"+i).parent().next().html("<a href='javascript:delTableRow(\""+(i-1)+"\")'>删除</a>");// //将i-1的值赋值给文本框的id,用于删除 $("#"+i).attr("id",(i-1));//将id设置成i-1 } } } function returnMethod(){ return saveDict(); } </script> </HEAD> <body> <Form name="Form1" id="Form1" method="post" style="margin:0px;"> <table cellSpacing="1" cellPadding="0" width="90%" align="center" bgColor="#f5fafe" border="0"> <TBODY> <tr> <td class="ta_01" colspan=3 align="center" style="background:../../../images/b-info.gif"> <font face="宋体" size="2"><strong>数据字典维护</strong></font> </td> </tr> <TR height=10><td colspan=3></td></TR> <tr> <td class="ta_01" align="right" width="35%" >类型列表:</td> <td class="ta_01" align="left" width="30%" > <select name="keyword" class="bg" style="width:66%" οnchange="changetype()"> <option value="jerrynew"></option> <c:forEach items="${DDlList }" var="ddl"> <option value="${ddl.keyword}">${ddl.keyword}</option> </c:forEach> </select> </td> <td class="ta_01" align="right" width="35%" > </td> </tr> <tr> <td class="ta_01" align="right" width="35%" id="newtypename">类型名称:</td> <td class="ta_01" align="left" width="30%" height=20 id="newddlText"> <input type="text" name="keywordname" maxlength="25" size=24> </td> <td class="ta_01" align="right" width="35%" ></td> </tr> <TR height=10><td colspan=3 align="right"> <input type="button" name="saveitem" value="添加选项" style="font-size:12px; color:black; height=20;width=80" onClick="insertRows()"> </td></TR> </TBODY> </table> </Form> <Form name="Form2" id="Form2" method="post" style="margin:0px;"> <table cellSpacing="1" cellPadding="0" width="90%" align="center" bgColor="#f5fafe" border="0" > <tr> <td > <table cellspacing="0" cellpadding="1" rules="all" bordercolor="gray" border="1" id="dictTbl" style="BORDER-RIGHT:gray 1px solid; BORDER-TOP:gray 1px solid; BORDER-LEFT:gray 1px solid; WIDTH:100%; WORD-BREAK:break-all; BORDER-BOTTOM:gray 1px solid; BORDER-COLLAPSE:collapse; BACKGROUND-COLOR:#f5fafe; WORD-WRAP:break-word"> <tr style="FONT-WEIGHT:bold;FONT-SIZE:12pt;HEIGHT:25px;BACKGROUND-COLOR:#afd1f3"> <td class="ta_01" align="center" width="20%" height=22 style="background:../../../images/tablehead.jpg">编号</td> <td class="ta_01" align="center" width="60%" height=22 style="background:../../../images/tablehead.jpg">名称</td> <td class="ta_01" align="center" width="20%" height=22 style="background:../../../images/tablehead.jpg">删除</td> </tr> <tr> <td class="ta_01" align="center" width="20%">1</td> <td class="ta_01" align="center" width="60%"> <input name="itemname" type="text" size="45" maxlength="25"></td> <td class="ta_01" align="center" width="20%"></td> </tr> </table> </td> </tr> <tr> <td > </td> </tr> <TR height=10><td colspan=3></td></TR> <tr> <td align="center" colspan=3> <tr> <td align="center" colspan=3> <input type="button" name="saveitem" value="保存" style="font-size:12px; color:black; height=20;width=50" onClick="returnMethod()"> </td> </tr> </td> </tr> <input type="hidden" name="keywordname" > <input type="hidden" name="typeflag" > </table> </Form> </body> </HTML> |
dictionaryEdit.jsp:
<%@ page language="java" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <table cellSpacing="1" cellPadding="0" width="90%" align="center" bgColor="#f5fafe" border="0" > <tr> <td > <table cellspacing="0" cellpadding="1" rules="all" bordercolor="gray" border="1" id="dictTbl" style="BORDER-RIGHT:gray 1px solid; BORDER-TOP:gray 1px solid; BORDER-LEFT:gray 1px solid; WIDTH:100%; WORD-BREAK:break-all; BORDER-BOTTOM:gray 1px solid; BORDER-COLLAPSE:collapse; BACKGROUND-COLOR:#f5fafe; WORD-WRAP:break-word"> <tr style="FONT-WEIGHT:bold;FONT-SIZE:12pt;HEIGHT:25px;BACKGROUND-COLOR:#afd1f3"> <td class="ta_01" align="center" width="20%" height=22 style="background:../../../images/tablehead.jpg">编号</td> <td class="ta_01" align="center" width="60%" height=22 style="background:../../../images/tablehead.jpg">名称</td> <td class="ta_01" align="center" width="20%" height=22 style="background:../../../images/tablehead.jpg">删除</td> </tr> <c:forEach items="${ByKeywordList}" var="list"> <tr> <td class="ta_01" align="center" width="20%">${list.ddlcode }</td> <td class="ta_01" align="center" width="60%"> <input id="${list.ddlcode}" name="itemname" type="text" value="${list.ddlname }" size="45" maxlength="25"></td> <td class="ta_01" align="center" width="20%"> <a href='javascript:delTableRow("${list.ddlcode}")'>删除</a> </td> </tr> </c:forEach> </table> </td> </tr> <tr> <td > </td> </tr> <TR height=10><td colspan=3></td></TR> <tr> <td align="center" colspan=3> <input type="button" name="saveitem" value="保存" style="font-size:12px; color:black; height=20;width=50" onClick="saveDict()"> </td> </tr> <input type="hidden" name="keywordname" > <input type="hidden" name="typeflag" > </table> |
controller:
@Controller @RequestMapping("dictionary/") public class DictionaryController { @Autowired SystemDDlService systemDDlService; @Autowired EnergySystemddlMapper energySystemddlMapper; @RequestMapping("dictionaryIndex") public String todictionaryIndex(ModelMap model){ EnergySystemddl energySystemddl = new EnergySystemddl(); List<EnergySystemddl> list = energySystemddlMapper.getIsDistinctKeyword(energySystemddl); model.addAttribute("DDlList", list); return "page/system/dictionaryIndex"; } @RequestMapping("dictionaryEdit") public String toDictionaryEdit(String keyword,ModelMap model){ EnergySystemddlExample example = new EnergySystemddlExample(); Criteria criteria = example.createCriteria(); criteria.andKeywordEqualTo(keyword); model.addAttribute("ByKeywordList", energySystemddlMapper.selectByExample(example)); return "page/system/dictionaryEdit"; } } |
service:
@Service @Transactional public class SystemDDlService { @Autowired EnergySystemddlMapper energySystemddlMapper; public void saveSystemDDL(EnergySystemddl energySystemddl) { // 1:获取页面保存的3个参数的值 // 数据类型 String keywordName = energySystemddl.getKeywordname(); // 用来判断执行的是新增一种数据类型,还是在已有数据类型的基础上进行修改和编辑(new/add) String typeflag = energySystemddl.getTypeflag(); // 数据项的值 String[] itemname = energySystemddl.getItemname(); // 使用typeflag作为判断业务的标识 // 如果typeflag.equal("new"),此时是新增一种数据类型 if (typeflag != null && typeflag.equals("new")) { // 遍历页面传递的数据项的值的数组,组织PO对象,执行新增的操作。 this.saveSystemDDL(itemname, keywordName); } // 如果typeflag.equal("add"),此时在已有的数据类型的基础上进行修改和编辑 else { // 先使用数据类型作为条件,查询对应数据类型下的列表(List<ElecSystemDDL>),执行删除,删除List EnergySystemddlExample example = new EnergySystemddlExample(); Criteria criteria = example.createCriteria(); criteria.andKeywordEqualTo(keywordName); List<EnergySystemddl> list = energySystemddlMapper.selectByExample(example); if (null != list && !list.isEmpty()) { for (EnergySystemddl energySystemddl2 : list) { // 删除对应数据类型的数据 energySystemddlMapper.deleteByPrimaryKey(energySystemddl2.getId()); } } // 遍历页面传递的数据项的值的数组,组织PO对象,执行新增的操作。 this.saveSystemDDL(itemname, keywordName); } } private void saveSystemDDL(String[] itemname, String keywordName) { if (itemname != null && itemname.length > 0) { for (int i = 0; i < itemname.length; i++) { EnergySystemddl energySystemddl = new EnergySystemddl(); energySystemddl.setKeyword(keywordName); energySystemddl.setDdlcode(i + 1); energySystemddl.setDdlname(itemname[i]); energySystemddlMapper.insertSelective(energySystemddl); } } } } |