zoukankan      html  css  js  c++  java
  • 数据字典的设计--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);
                }    
            }
    }

     

     

  • 相关阅读:
    CentOS7上安装Pycharm
    一个苹果证书怎么多次使用(授权Mac开发)——导出p12文件
    MAC上搭建Jenkins + Android + IOS自动开发部署环境
    Pivotal Cloud Foundry学习笔记(1)
    Ubuntu上部署tomcat后无法访问8080端口问题
    Ubuntu上部署Jenkins
    Ubuntu输入命令无效的问题
    python中发送post请求时,报错“Unrecognized token 'xxxx': was expecting ('true', 'false' or 'null')”
    pycharm的断点调试【转自https://blog.csdn.net/weixin_39198406/article/details/78873120】
    Python中的logging模块【转】https://www.cnblogs.com/yelin/p/6600325.html
  • 原文地址:https://www.cnblogs.com/zhstudy/p/7100941.html
Copyright © 2011-2022 走看看