OA项目10:部门管理的三个细节问题的解决及处理懒加载问题

首注:本学习教程为传智播客汤阳光讲师所公布的免费OA项目视频我的文字版实践笔记,本人用此来加强巩固自己开发知识,如有网友转载,请注明。谢谢。

一 部门管理遗留三个细节问题,及其处理方法:

  1.当选择了子部门列表,希望增加返回上一级按钮,点击可以回到上一级的部门列表;

    1)在list页面添加返回上一级按钮(在新建按钮后面),如下:

    <s:a action="department_list?parentId=%{#parent.parent.id}"><img     src="${pageContext.request.contextPath}/style/blue/images/button/ReturnToPrevLevel.png" /></s:a>

    2)在DepartmentAction.java的list()方法中(parent!=null)新增以下代码,查询到parent对象:

    Department parent = departmentService.findById(parentId);

      ActionContext.getContext().put("parent", parent);

  2.在子部门列表中新建修改部门时,希望在新建页面的上一级部门中回显上级部门的信息;在保存部门时,回到新建部门的同级部门列表,以便显示刚刚新建的部门。

    在list.jsp中的新建按钮中添加parentId,内容如下,这样在新建页面就可以回显上级部门信息了:

    <s:a action="department_addUI?parentId=%{parentId}"><img src="${pageContext.request.contextPath}/style/images/createNew.png" /></s:a>

    在struts.xml文件中,修改重定向的result值,添加parentId值,在重定向功能时就可以带着parentId回到我们的上级部门显示列表了:

    <result name="toList" type="redirectAction">department_list?parentId=${parentId}</result>

  3.在删除子部门时,希望回到删除部门的同级部门显示列表。

    在list.jsp中修改删除按钮,添加parentId,如下:

    <s:a onClick="return window.confirm('这将删除所有的下级部门,您确定要删除吗?')" action="department_delete?id=%{id}&parentId=%{parentId}">删   除</s:a>

二 懒加载异常的处理:

  之前在项目中出现了懒加载异常,当时使用了临时的解决办法就是在Department.hbm.xml中使用了lazy="false",但这并不能根除问题,因为这样的话就把懒加载的好处都去掉了,所以为了更好的解决此问题,即不让session在service层关闭,在filter或interceptor中关闭。采取以下办法:

  在web.xml中配置一个过滤器,具体内容如下(注意:要配置在struts过滤器之前):

  <!-- 配置Spring用于解决懒加载问题的过滤器,要配在struts2过滤器之前 -->

  <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>*.action</url-pattern>

  </filter-mapping>

  这样就解决了懒加载的问题,不信启动服务器试试。

 

你可能感兴趣的:(懒加载)