java - Is Inheritance in Struts2 Model-Driven Action possible? -


i have model-driven struts2 action provides correct json response. when re-structure action empty json response back. has got inheritance working struts2 model-driven actions?

ive tried explicitly setting include properties in struts config:

 <result name="json" type="json">    <param name="includeproperties">       jsonresponse    </param> </result> 

code actions below - not actual code in use - have edited , stripped down clarity.

thanks in advance.

action providing correct response:

 public class bike extends actionsupport implements modeldriven, preparable {      @autowired private service bikeservice;     private jsonresponse jsonresponse;     private com.ets.model.vehicle bike;     private int id;      public bike() {         jsonresponse = new jsonresponse("bike");     }      @override     public void prepare() throws exception {         if (id == 0) {             bike = new com.ets.model.bike();         } else {             bike = bikeservice.find(id);         }     }      @override     public object getmodel() {         return bike;     }      public void setid(int id) {         this.id = id;     }      public void setbikeservice(@qualifier("bikeservice") service bikeservice) {         this.bikeservice = bikeservice;     }      public jsonresponse getjsonresponse() {         return jsonresponse;     }      public string delete() {         try {             bike.setdeleted(new date(system.currenttimemillis()));             bikeservice.updateorsave(bike);             jsonresponse.addactionedid(id);             jsonresponse.setaction("delete");             jsonresponse.setvalid(true);         } catch (exception exception) {             jsonresponse.setmessage(exception.tostring());         }         return "json";     } } 

re-structured actions providing incorrect response:

 public abstract class vehicle extends actionsupport implements modeldriven {      @autowired protected service bikeservice;     @autowired protected service carservice;     protected jsonresponse jsonresponse;     protected com.ets.model.vehicle vehicle;     protected int id;      protected abstract service service();      @override     public object getmodel() {         return bike;     }      public void setid(int id) {         this.id = id;     }      public void setbikeservice(@qualifier("bikeservice") service bikeservice) {         this.bikeservice = bikeservice;     }      public void setcarservice(@qualifier("carservice") service carservice) {         this.carservice = carservice;     }      public jsonresponse getjsonresponse() {         return jsonresponse;     }      public string delete() {         try {             vehicle.setdeleted(new date(system.currenttimemillis()));             service().updateorsave(vehicle);             jsonresponse.addactionedid(id);             jsonresponse.setaction("delete");             jsonresponse.setvalid(true);         } catch (exception exception) {             jsonresponse.setmessage(exception.tostring());         }         return "json";     }  }  public class bike extends vehicle implements preparable {      public bike() {         jsonresponse = new jsonresponse("bike");     }      @override     public void prepare() throws exception {         if (id == 0) {             vehicle = new com.ets.model.bike();         } else {             vehicle = bikeservice.find(id);         }     }      @override     protected service service() {         return bikeservice;     }  }  public class car extends vehicle implements preparable {      public car() {         jsonresponse = new jsonresponse("car");     }      @override     public void prepare() throws exception {         if (id == 0) {             vehicle = new com.ets.model.car();         } else {             vehicle = carservice.find(id);         }     }      @override     protected service service() {         return carservice;     }  } 

moved type-specific code child classes, , fixed getmodel() return correct domain object:

public abstract class vehicle extends actionsupport         implements modeldriven, preparable {      protected int id;      protected abstract service service();     public abstract void setservice(service service);     public abstract jsonresponse getjsonresponse();      public void setid(int id) {         this.id = id;     }      public string delete() {         jsonresponse jsonresponse = getjsonresponse();         try {             getmodel().setdeleted(new date(system.currenttimemillis()));             service().updateorsave(getmodel());             jsonresponse.addactionedid(id);             jsonresponse.setaction("delete");             jsonresponse.setvalid(true);         } catch (exception exception) {             jsonresponse.setmessage(exception.tostring());         }         return "json";     } }  public class bike extends vehicle {      @autowired protected service bikeservice;     private com.ets.model.bike model;      @override     public void prepare() throws exception {         if (id == 0) {             model = new com.ets.model.bike();         } else {             model = bikeservice.find(id);         }     }      @override     public object getmodel() {         return model;     }      @override     protected service service() {         return bikeservice;     }      @override     public void setservice(@qualifier("bikeservice") service bikeservice) {         this.bikeservice = bikeservice;     }      @override     public jsonresponse getjsonresponse() {         return new jsonresponse("bike");     } }  public class car extends vehicle {      @autowired protected service carservice;     private com.ets.model.car model;      @override     public void prepare() throws exception {         if (id == 0) {             model = new com.ets.model.car();         } else {             model = carservice.find(id);         }     }      @override     public object getmodel() {         return model;     }      @override     protected service service() {         return carservice;     }      @override     public void setservice(@qualifier("carservice") service carservice) {         this.carservice = carservice;     }      @override     public jsonresponse getjsonresponse() {         return new jsonresponse("car");     } } 

Comments

Popular posts from this blog

javascript - Enclosure Memory Copies -

php - Replacing tags in braces, even nested tags, with regex -