zoukankan      html  css  js  c++  java
  • 用户管理的设计--5.用户信息的保存

    页面效果

    1.当新增用户时,保存用户信息,并刷新用户管理首页

    2.当编辑已存在的用户时,更新用户信息,并刷新用户管理首页


    实现步骤

    1.Action类中定义save()及edit()

    /**  
        * @Name: save
        * @Description: 新增用户保存
        * @Parameters: 无
        * @Return: String:跳转到close.jsp
        */
        public String save(){
            elecUserService.saveUser(elecUser);
            return "close";
        }
        
        /**  
        * @Name: edit
        * @Description: 跳转到用户编辑页面
        * @Parameters: 无
        * @Return: String:跳转到userEdit.jsp
        */
        public String edit(){
            //1.获取用户ID
            String userID = elecUser.getUserID();
            //2.使用用户ID,查询ElecUser对象,支持表单回显,这里的user是放栈顶的对象,不同于elecUser
            ElecUser user=elecUserService.findUserByID(userID);
            //将VO对象的属性值,放入PO对象的属性值
            user.setViewflag(elecUser.getViewflag());
            //3.将ElecUser对象放入栈顶,页面使用struts2标签回显
            ValueUtils.pushValueStack(user);
            //4.加载数据字典,用来遍历性别,职位,所属单位,是否在职
            this.initSystemDDL();
            //5.二级联动的表单回显
            //(1)从ElecUser对象获取所属单位的编号
            String ddlCode = user.getJctID();
            //(2)根据所属单位和数据项编号,获取数据项的值
            String ddlName=elecSystemDDLService.findDdlNameByKeywordAndDdlCode("所属单位",ddlCode);
            //(3)使用查询的数据项的值,作为数据类型,查询该数据类型的对应的集合,返回List<ElecSystemDDL>
            List<ElecSystemDDL> jctUnitList = elecSystemDDLService.findSystemDDLListByKeyword(ddlName);
            request.setAttribute("jctUnitList", jctUnitList);
            return "edit";
        }

     

    2.struts.xml中添加

    <!-- 全局转发 -->
    <global-results>
          <!--子页面关闭,刷新父页面-->
           <result name="close">/close.jsp</result>
    </global-results>

    用户管理<action>下添加

    <result name="add">/WEB-INF/page/system/userAdd.jsp</result>
    <result name="edit">/WEB-INF/page/system/userEdit.jsp</result>

    3.service实现类中定义用户保存方法

    /**  
        * @Name: saveUser
        * @Description: 新增用户保存
        * @Parameters: ElecUser:VO对象
        * @Return: 无
        */
        @Override
        @Transactional(isolation=Isolation.DEFAULT,propagation=Propagation.REQUIRED,readOnly=false)
        public void saveUser(ElecUser elecUser) {
            //获取用户ID
            String userID = elecUser.getUserID();
            //判断是新增还是编辑
            if(StringUtils.isNotBlank(userID)){
                //更新
                elecUserDao.update(elecUser);
            }else{
                //组织PO对象,保存用户(1条数据)
                elecUserDao.save(elecUser);
            }      
        }

     这里获取用户ID值得是获取页面传递的userID,在jsp页面通过添加一个隐藏域实现,隐藏域中存放userID的值:

    <s:hidden name="userID"></s:hidden>

    4.在web.xml中添加

    <!-- 
        添加spring解决hibernate懒加载的问题,过滤器 该过滤器一定要放置到struts2过滤器的前面
        原理:延迟了Session的关闭时间,在页面上关闭
        -->
        <filter>
            <filter-name>OpenSessionInViewFilter</filter-name>
            <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
        </filter>
        <filter-mapping>
            <filter-name>OpenSessionInViewFilter</filter-name>
            <url-pattern>*.do</url-pattern>
            <url-pattern>*.jsp</url-pattern>
        </filter-mapping>

    添加OpenSessionInViewFilter过滤器是因为在上面编辑方法edit()中,user对象压入栈顶后,session关闭清空,再进行二级联动表单回显时,无法完成懒加载。

    5.关闭子页面,刷新用户管理首页面

    <%@ page language="java"  pageEncoding="UTF-8"%>
    <script language="javascript" src="${pageContext.request.contextPath }/script/function.js"></script>
    <html>
    <head>
    <title>操作成功</title>
    </head>
    <Script language="javascript">
    function closeMethod(){
        refreshOpener();
    }
    </Script>
    <body onload="closeMethod()">
    操作成功!
    </body>
    </html>
    JSP页面代码

    其中refreshOpener的js代码如下:

    function refreshOpener(){
    
        //opener.location.href=sHref;
        opener.location.reload();
        window.close();
    }
  • 相关阅读:
    Inno Setup新建项目
    Modal实现页面跳转和控制器数据传递
    Asp.net Web Api添加异常筛选器
    Inno Setup添加中文安装语言文件
    ubuntu 自动获取IP
    JavaScript 语言基础知识点总结(思维导图)
    自己整理的部分腾讯web前端开发的笔试题目及答案
    spry可折叠面板
    131变化两边,固定中间的布局
    HTML中的dl、dt和dd标记
  • 原文地址:https://www.cnblogs.com/zhstudy/p/7157976.html
Copyright © 2011-2022 走看看