年前小结-2012-01-20

 

明天回家啦,对于这个周做个简单小结。

这周主要工作也是OA,而且发现工作量要比原来预计的大很多。另外,对于OA的实现来讲,还没遇到难点,主要是对于业务的不够了解,如果需求定了,也可以自己实现。比如,对于现在做到的几个模块,基本上都是看完视频,看着需求说明实现的。新鲜东西不多:

1.对于Log4j简单的学习了一下,这个东西在公司用过,所以学起来轻松很多。

2.一个分页控件pager-taglib,用着很好用,不过有个小问题,就是我现在用的是struts2,在传参数offset(从第几条记录开始查询)时候,用的是pager.offset,而struts2接收页面参数的方式是采用定义变量并有getter、setter方法,而且,由于没有pager.offset的getter、setter方法,后台始终报错:pager-taglib target is null for setProperty(null, "offset", [Ljava.lang.String]。虽然也可以用request.getParameter,不过,对于struts2来讲就“不正宗”了。用request.getParameter的方式取得了pager.offset可以实现分页了,但是后台还是在报错(至今未解决,我估计可以更改pager-taglib这个框架的源代码来解决这个问题)。分页这件事情做了挺久的。

3.终于接近OA的中心一点的内容了——权限管理。权限管理三元素:谁,可以做什么,如何做。

现在把各个模块(模块、角色、用户)的管理都完成了,还差最中心那部分:授权。挺绕的,不过还好,理解了需求就不觉得绕了,比起数据银行的那个变态的代理来讲,差多了。其中做到授权的后台的时候,用到一种思想,还是第一次接触:定义一个int类型的变量,用其后四位(int类型数据是32位)来表示权限CRUD,0代表无权限,1代表有权限。具体的实现如下:

/**
	 * acl实例跟主体和资源关联
	 * 针对此实例进行授权:某种操作是否允许
	 * @param permission 只可以取值0,1,2,3
	 * @param yes true表示允许,false表示不允许
	 */
	public void setPermission(int permission,boolean yes){
		int tmp = 1;
		tmp = tmp << permission;
		if(yes){
			aclState |= tmp;
		}else{
			aclState &= ~tmp;
		}
	}

你可能感兴趣的:(log4j,工作,struts,null,getter,setter)