本帖最后由 jxsfreedom 于 2010-11-12 16:36:20 编辑

解决方案 »

  1.   

    public class Elements<E> {?
      

  2.   

    从日志来看是你传进来的Element不是Customer类型呀:
    在这个方法跟踪一下
     public void setElements(Elements<Customer> elements) {
            this.elements = elements;
      }
    看this.elements到底是什么东东
      

  3.   

    'elements.e.name' with value '[Ljava.lang.String;@7ca998'
    说明name接到的值只是一个地址!~~你检查下你从JSP页面穿了的值。
    你可以不必先急着封装,先写一个
    privat String name(与JSP中的name对应)
    SET方法然后
    syso(name);
    看Name的值是什么
      

  4.   


    问题是出在Elements里面的e上,我把断点放在了setE(E e)里面,e显示为Object
    也就是说,struts实例化的时候,并没有为我找到Customer这个类型,而是直接设置一个Object给泛型,所以下一个的e.name就会出错了,因为Object根本没name这个属性
      

  5.   

    搞不明白为什么struts没有为我找到正确的类型来实例,可是如果我用java本身的集合泛型的话却可以
        private List<Custeomer> list;    @Override
        public String execute() {
            System.out.println(list.get(0).getName());
            return SUCCESS;
        }URL:http://localhost/xxx/action/generic?list[0].name=nagisa
      

  6.   

    直接'elements.name' 试一下,不要加e,因为这里的e就是代表你的elements。跟list不一样的,不能并论!
      

  7.   

    e怎么就代表elements,e是elements里面的一个属性
    当初我模仿List写,struts还是无法实例化出来
      

  8.   

    虽然不知道怎么解决
    但是可以用其他办法代替public class Element<E> {
       private List<E> elements;   private List<E> selectedElement;   ....setter,getter
    }
    public class MyAction extends ActionSupport {
       private Element<Customer> element;   ....
    }前台那边element.selectedElement.name=xxxx是可以将selectedElement实例化并将一个Customer添加到里面,然后getter那里返回列表的第一个元素就可以了
      

  9.   

    我对泛型只是大概了解,但我总觉得 private Elements<Customer> elements;这段代码有点问题,前台的name不会自动匹配紧Customenr
      

  10.   

    按理解 你现在的 Elements对象应该就是Customer对象呀