传智播客--OA的部门管理和员工管理模块的实现总结


复习昨天内容,昨天的模块主要就是增删改查的练习.熟悉开发流程,为后面的模块打好基础.
ActionForm 的回显.在editUI中使用.不需要放到request中.
这里使用了struts的提供的标签,并且在准备好的数据时,不放在request 中.而是直接放在ActionForm中,这样就能直接实现回显的功能.方便快速.呵呵

1.部门管理.
结构上不同.这里使用的是树形结构.一个部门下面有多个部门.部门的下面还有部门.所以,这里用树形结构是最合适的了.能很好的解决这个问题.来实现功 能.
刚一进入页面的时候,默认显示最顶端的部门.这里用父ID为NULL,进行判断.
在DAO中再实现一个方法,来制定父ID的部门列表.这样就实现了,分层次显示部分的功能.
这里用到了递归
我们可以提供一个工具方法.来方便我们的开发使用.
for (Department dept : topLeveDepartments) {
            System.out.println("|-"+dept.getName());
           
            for(Department d : dept.getChildren()){
                System.out.println(" |-"+d.getName());
            }
}

2.添加不同:
分部门显示,在添加部门的时候,就不和上一个模块的添加一样.这个模块要比上一个模块复杂.
添加分为添加同级部门和添加下级部门.同样,也需要两个方法来实现功能.这个模块的修改和删除和上一个模块是一样的.没有多大的区别.所以,开发多了,就 会有很多相似的地方.为了提高开发的速度,有些地方得学会拷贝,并巧妙的时候IDE工具提供的替换功能.这样会大大提高我们的开发效率.
DepartmentService的编写
岗位管理模块的Service类是通过继承来实现的.不过,我们这个部门模块得需要一个自己的方法.
public List<Department> findTopLevel() {
        return getSession().createQuery(//
                "FROM Department d WHERE d.parent IS NULL")//
                .list();
员工管理,先不看账号.
开发要一步一步来,不要一下都做.这样,对我们初学者来是不利.员工的开发,开始就不要看账号分配的功能.一个功能一个功能的实现.

3.Long型数组的使用.
在添加员工信息的时候,我们使用了一个多选框.这里,在后台的Action中,接收数据的时候,我们用使用一个Long型的数组.来处理.

4.BeanUtils.copyProperty() 的使用:
在Action的类中,我们经常在Actionfrom和对象之间的拷贝.如果对象的属性少,我们可以一个一个的set和get但是,属性多的时候,这个 显然不是很现实.我们这里就用到了,我们前面学习到的一个工具类 BeanUtils.这个工具很使用.我们这里就使用到了BeanUtils.copyProperty()这个方法.但使用,这个方法的时候,要注意. 属性名不同是不能自动进行拷贝的,有特殊的属性时,我们用单独的处理一下.只拷贝同名的属性.

5.项目经验
1)不返回null,要返回空的集合.
在对集合进行初始化的时候,我们这里就进行了声明HashSet等,就是为了在使用的时候,减少对null的判断.这样使用方便.
2)查询时,in的使用.getSession().createQuery(“”).setParameterList(“”,””).list();
这样的语句在Hibernate对数据库操作的时候,用到的是in,效率高.
3)在进行程序链编程的时候要注意判断空指针.
4)Long 型,不要忘了在数的后面加上L.1L,2L

6.转换器
在对日前进行处理的时候,我们用到了转换器.
转换器是BeanUtils提供的功能. 在类上我们要实现Converter接口
在使用之前注册就不晚.回显是调用toString方法的.
public Object convert(Class clazz, Object value) {
        if (value == null) {
            return null;
        }
        if (value instanceof Date) {
            return value;
        }
        if (value instanceof String) {
            try {
                String source = (String) value;
                return sdf.parseObject(source);
            } catch (ParseException e) {
                return null;
            }
        }
        throw new IllegalArgumentException("不支持的类型:" + value.getClass());
    }

7.在显示日期的格式时候我们要使 用标签处理.这里就遇到了标签嵌套的问题.
要这样解决:
<fmt:formatDate value="${EmployeeActionForm.employTime }" pattern="yyyy-MM-dd" var="employTime"/>
<html:text property="employTime" value="${employTime}" styleClass="input1 datepicker_input"/>

8.jQuery 的时间插件.
在数据时间的时候,为了保证输入正确的格式,这里使用jQuery的时间插件.
先引入jQuery库,再引入jQuery插件的库.
通过对Domo例子的分析,我们可以很容易的应用到我们的系统上来.很快就实现功能了.

角色管理,通过前面学习的东西, 我们可以很容易实现这个模块了.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值