昨天写的java json字符串转map集合递归嵌套这篇博文,只是某个功能中的一小部门. 这个功能就根据json串配置的校验指标,去校验对应的列表数据中的必填项是否完整,不完整就在当前页面提示用户,去完善数据.当某条记录不完善的时候,会将不完善的那条数据的背景色置为红色,如图: 校验分为两类,一类是dom加载完以后校验当前页出现的id,一类是全局的校验. 后台处理代码 //将前台的json串转成map集合 …
今天在做一个校验的功能,为了通用,在页面上使用json字符串配置要校验的所有项和表.在后台转map的时候一层一层的转太麻烦了,就写了个通用 方法来转. 转换方法: /** * json字符串转map集合 * @author ducc * @param jsonStr json字符…
二十九:application中都保存了什么东西? 1,登录用户的user对象 当前用户的一般属性,不包含关联的集合属性(为了减少session的存储量) 计算出来的用户的权限总和long[] rightSum; 当用户登录时,验证通过以后计算出来的该用户的权限, * 如果想让用户权限的实时跟随者改变,只要在管理修改该用户的权限的时候,我…
二十八:权限设计 在用户登录的时候需要读取出用户的权限,并将用户的权限位和权限码放入到session中, 使用spring的applicationListener监听器,在服务器启动的时候就将所有的权限放入到application中 /** * 事件监听器 */ @SuppressWarnings("rawtypes") @Component public class IniRightListener implements ApplicationListener,ServletContext…
二十四:权限设计相关 * 每个权限的标识码都是1<<n,如果接受权限码的是int类型,只能1<<31次,如果是long类型的话,最多只能1<<62 这样的缺陷就限制了权限的数量了, 1==0001<<1=0010 1==0001&0010=0 &是相乘 1|2 0001 | 0010 =3 |是相加  …
十七: 当使用拦截器,给拦截器注入参数的时候 <param name="拦截器名.可以set的属性的命(去对应的拦截器中找set方法)"></param> 动态指定action的input的值在action中定义一个属性inputpage 在配置文件中的input指定${inputAction} 执行到哪个拦截器没有通过这个拦截器的验证,那么就只能走到这个拦截器,不进入action的方法,就直接返回input或者拦截…
八:使用泛型化的BaseAction产生的问题 import java.lang.reflect.ParameterizedType; import cn.survey.exception.ActionException; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.ModelDriven; import com.opensymphony.xwork2.Preparable; /** * 模型驱动只在进入a…
一: 在eclipse中jar包不能在lib下分类存放,如果分类存放,则会发生找不到类的异常 二: 在struts中使用validate和prepare的时候后面跟的是方法名(第一个字母大写),也可以加Do方法名 三: session关注 在struts的action中可以实现SessionAware接口,在经过session拦截器的时候会自动的创建 注入struts封装的session(是一个map集合) 四:自定义登录拦截器: 将…
在做数据迁移的时候,最蛋疼的就是数据之间的外键关联.这种硬关联在来回的导数据的时候也特别的让人纠结. 我们的系统中,企业基本信息(BASE_QYJBXX)和人员基本信息(BASE_RYJBXX)的关联是通过企业人员关系表(BASE_QYRYGXB)来关联的. BASE开头的表示我们的基础数据,企业在做业务的时候都会把BASE表给的基础数据,拷贝到过程表(PROCESS_*)里,来让客户做修改. 最后通过审批以后,过程表(PROCESS_*)中的数据会回写到BASE_*表中. insert into PROCESS_…
习惯使用java的HashMap,js封装数据的时候也想用map集合,就找了一个封装好的js版的HashMap. function HashMap() { /** Map大小* */ var size = 0; /** 对象* */ var entry = new Object(); /** Map的存put方法* */ this.put = function(key, value) { if (!this.containsKey(key)) { size++; entry[key] = value; } } /*…