解决方案 »

  1.   

    后台声明的对象是父类的,子类的属性注入不进去,主要问题就是怎么把子类属性注入进去 
    还是传参再判断值,通过重新new子类。通过重写构造方法实现。
    public class A {
    private String attr;
    public String getAttr() {
    return attr;
    }
    public void setAttr(String attr) {
    this.attr = attr;
    }
    public A() {
    }
    }
    class B extends A {
    private String attrs;
    public String getAttrs() {
    return attrs;
    }
    public void setAttrs(String attrs) {
    this.attrs = attrs;
    }
    public B() {
    }
    public B(A a, String attrs) {
    setAttr(a.getAttr());
    setAttrs(attrs);
    }
    }
    class C {
    public static void main(String[] args) {
    String attrs = "a";
    A a = new A();
    a.setAttr("aaa");
    if (attrs != null) {
    a = new B(a, attrs);
    }
    }
    }
    不过说实话,你声明的是父类,但是指向的是子类对象,但是子类比父类对象字段更多,你接下来要操作子类中的属性还要进行强转。
      

  2.   

    后台声明的对象是父类的,子类的属性注入不进去,主要问题就是怎么把子类属性注入进去 
    还是传参再判断值,通过重新new子类。通过重写构造方法实现。
    public class A {
    private String attr;
    public String getAttr() {
    return attr;
    }
    public void setAttr(String attr) {
    this.attr = attr;
    }
    public A() {
    }
    }
    class B extends A {
    private String attrs;
    public String getAttrs() {
    return attrs;
    }
    public void setAttrs(String attrs) {
    this.attrs = attrs;
    }
    public B() {
    }
    public B(A a, String attrs) {
    setAttr(a.getAttr());
    setAttrs(attrs);
    }
    }
    class C {
    public static void main(String[] args) {
    String attrs = "a";
    A a = new A();
    a.setAttr("aaa");
    if (attrs != null) {
    a = new B(a, attrs);
    }
    }
    }
    不过说实话,你声明的是父类,但是指向的是子类对象,但是子类比父类对象字段更多,你接下来要操作子类中的属性还要进行强转。主要是后台分属性的话十几个字段实在受不了,最坏的情况还是分action提交吧,不过总觉得要是可以改struts2的注入类型就会方便很多了。