解决方案 »

  1.   

    你错的不是泛型的问题
    dataBean这个对象,没有data1和data2属性
      

  2.   


    bean中是有这两个属性的  
      

  3.   

    public class DataBean{
    private String data1;

    private String data2; public String getData1() {
    return data1;
    } public void setData1(String data1) {
    this.data1 = data1;
    } public String getData2() {
    return data2;
    } public void setData2(String data2) {
    this.data2 = data2;
    } @Override
    public String toString() {
    return "DataBean [data1=" + data1 + ", data2=" + data2 + "]";
    }


    }
      

  4.   

    1,调用struts的配置文件中的action名称,不知道你有写对了没,因为你没列出struts文件
    2,前台的字段要与后台控制的action里面的属性相对应,你确定自己是否有正确对应
      

  5.   


    这个应该是OK的  我现在的问题是 假如我再这个action中  注入databean不用泛型  使用private Databean databean  这样的话就OK,我感觉问题是假如说你这样写 他就可以通过bean取出其属性或者也可以给属性赋值  但是假如说使用private T databean  前台传来就被认为是一个object 而无法为bean中的属性设置值  导致转换错误 。想请问下  有没有这种  在action中对bean做泛型话的编码方式 如果这样处理 那怎么解决转换的问题
      

  6.   


    这个应该是OK的  我现在的问题是 假如我再这个action中  注入databean不用泛型  使用private Databean databean  这样的话就OK,我感觉问题是假如说你这样写 他就可以通过bean取出其属性或者也可以给属性赋值  但是假如说使用private T databean  前台传来就被认为是一个object 而无法为bean中的属性设置值  导致转换错误 。想请问下  有没有这种  在action中对bean做泛型话的编码方式 如果这样处理 那怎么解决转换的问题首先我没用过!其次,我觉得前台传过来的值都是明确类型的,我不会去用泛型去做,宁愿多写一些代码或者配置!
      

  7.   

    你很幸运,遇到了我,我刚刚解决了这个问题。
    使用泛型,有些地方是可以,但是这里是不行的,因为涉及到对象实例化。
    你可以把dataBean的get、set方法写成抽象方法,dataBean这个对象去子类里用实际的类定义,然后重写get、set方法就可以了。
      

  8.   

    补充一点,在子类中重写get方法后,可能返回null,所以不能像原来那样直接return dataBean,你需要加一个判断,如果为null,需要手工创建一个 if (dataBean == null)  dataBean = new DataBean()
      

  9.   

    泛型类在初始化的时候要给泛型初始化,struts的action处理类是容器生成的,实例化的时候没有定义泛型的类型,所以报错。