数据调查项目总结(三)

2013/06/19 2021点热度 0人点赞 0条评论

十七: 当使用拦截器,给拦截器注入参数的时候

  <param name="拦截器名.可以set的属性的命(去对应的拦截器中找set方法)"></param>

  动态指定action的input的值在action中定义一个属性inputpage

  在配置文件中的input指定${inputAction}

  执行到哪个拦截器没有通过这个拦截器的验证,那么就只能走到这个拦截器,不进入action的方法,就直接返回input或者拦截器指定的页面了

十八: 动态的给配置文件中result的name=input赋值的时候,出现未进入action就返回input的也没指向null的解决方法

 /**由于使用了fileUpload拦截器,如果有错误会在拦截器中直接返回了input指定的页面

    *   由于input是动态指定的页面,inputPage指向的动态路径,是进入到action以后才给它赋得值

    *   所以需要在fileUpload之前将inputPage的值给指定了,经查看发现prepare拦截器在fileUpload拦截器之前

    *   所以在这里使用prepare*方法给inputPage赋值

    只要在fileUpload拦截器之前给其赋值都可以的

十九:通过序列化和反序列化深度复制对象图

/**
   * 深度复制,将源对象转换成字节数组,然后从新组装,虽然值相同,但是已经和原来的对象没有关系了
   * @param src 源对象
   * @return  复制出来的对象,是一个新的对象,而不是对原先对象的引用
*/
public static Serializable deeplyCopy(Serializable src){
      try {
          //定义一个字节数组输出流,通过序列化将对象变成字节数组
          ByteArrayOutputStream baos=new ByteArrayOutputStream();
          //定义个对象输出流
          ObjectOutputStream oos=new ObjectOutputStream(baos);
          //把要复制的对象写入到字节数组中
          oos.writeObject(src);
          //关闭流
          oos.close();
          baos.close();
          //从字节输出流中获取字节数组
          byte[] data=baos.toByteArray();
          //通过字节数组输入流 反序列化将字节数组组装成对象
          ByteArrayInputStream bais=new ByteArrayInputStream(data);
          ObjectInputStream ois=new ObjectInputStream(bais);
          Serializable copy=(Serializable)ois.readObject();
          //关闭流
          ois.close();
          bais.close();
          return copy;
      } catch (Exception e) {
          e.printStackTrace();
      }
      return null;
}

注意:

   * 需要深度复制的对象必须实现序列化接口Serializable

   * 如果不想深度复制对象图中某系相关联的对象,在关联的属性上加上transient这个关键字,在深度复制的时候不会复制该对象

     相当于在这个关键字这里对象图的链已经断开了

二十:action实现parameterAware可以将页面提交过来的参数注入到当前的action

   使用哪个button提交,也会将该button的name和value也当成参数提交过去

   button没有点击不会激活传递到后台

二十一:使用动态表单获取参数与回显数据

  1,action实现parameterAware,注入parameter

    将当前的页面整个保存到session中

/**
  * 注入session对象,实现parameterAware以后必须实现的方法
 */
public void setSession(Map<String, Object> session) {
    this.sessionMap=session;
}
Map<Integer,Map<String,String[]>> map=sessionMap.get(ALL_PARAMS);
map.put(currPid, paramsMap);

  2,循环遍历,在jsp页面中定义

二十二:如果form和按钮都有action,按钮上的为主,按钮的覆盖表单上的

二十三:在表单上disable和readonly的区别

     *  readonly只读,在表单上不可操作

         但是提交form表单的时候会提交到后台去

     *  disable 禁用,在表单上也不可以操作

         但是提交form的时候不会提交到后台去

yxkong

这个人很懒,什么都没留下

文章评论