1:  
S t r u t s 里面如果一个页面元素不知道有多少。我Fr om Be an怎么写啊?2:我现在项目有个模块,要同时对几十表进行insert,并且这些表,每张都很独立,不仅互相没任何关系,跟DB中其他表也无任何关系,
是否用hb的意义不大!这个模块的需求是:我能获得一条信息,每个信息有一个type,我需要按照不同的type把这条信息写到不同的表中!
由于系统的其他模块都用的hb,我想如果我这里也用hb的话,代码可能写成下面的样子:String  type = "tableA"
//如果type是tableA就插入tableA表
if(type.equls("tableA")) 
   A_Table_Class.save(); 
//如果type是tableB就插入tableB表
else if(type.equls("tableB")) 
   B_Table_Class.save();
.
.
.
.
.
.
.
这样就要写几十个不同对象的save感觉很不美观!
不知道我这种需求用hb应该怎么个用法,写法啊!求解啊!感谢

解决方案 »

  1.   

    String[]或者List,或者干脆用request取值这几十个对象能否实现同一个接口?
    可以的话,就把type改成类名,可以通过反射机制调用不同的类(或者用类工厂)
    ITable t = TableFactory.createTable(type);
    t.set...;
    session.save(t);
      

  2.   

    FormBeam中的属性最好用类封装,再在JSP中用Struts标签提交时,自动匹配值。<html:test property="FormBean中的属性名.FormBean中的封装的类中的属性">Hibernate我现在只是了解。
      

  3.   

    1.S t r u t s 里面如果一个页面元素不知道有多少。我Fr om Be an怎么写啊? 
    你怎么会不知道呢,一般一个表单会对应一个表吧,而实体对象hb能自动生成,那就把这个POJO作为formBean的
    成员属性,记得声明同时实列化;
    2.感觉代码重复,就直接获得type的最后一个字母再加在_Table_Class变成一个字符串.字符串有个getClass()
    方法返回一个Object的类(刚刚查API发现的,不知道这样行不行);                                                                                        String n="B"+"_table_Class";
    Class c =n.getClass();
    //Object object = c.forName(n);
    //String str = c.forName(n).getClass();
    Package p = c.getPackage();
    System.out.println(p);
    }
    我还想用字符串拼凑出类型,唉,搞不来,可能不行,呵呵
      

  4.   

    自定义一个mapbean这个类,里面就是一个Map getset方法,不管你有多少元素,都可以,只是不能有同名的元素
      

  5.   

    最好去java的框架专区去问这种问题
      

  6.   


    1:List;
    2:用hibernate bean直接save就可以了,但是需要注意,所有的save都要放到同一事务内,一个失败所有都回滚。
      

  7.   

    1,可以考虑将页面上不确定个数的的参数值拼成一个特定格式的字符串(xml或json)放到一个固定的隐藏区域中,到后台在解析这个字符串。
    2,这个问题建议考虑一下用存储过程实现会好一点,过程的一个参数为type。