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
Post a Comment