在Struts2模型中是继承
我有一个模型驱动的Struts2操作,提供了正确的JSON响应。 当我重新构造这个动作时,我得到一个空的JSON响应。 有没有人有继承工作与Struts2模型驱动的行动?
我曾试着在struts config中明确地设置include属性:
<result name="json" type="json">
<param name="includeProperties">
jsonResponse
</param>
</result>
以下所有操作的代码 - 并非实际使用的代码 - 为了清晰起见,我已编辑并删除了该代码。
提前致谢。
提供正确回应的行动:
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";
}
}
重新构造的行为提供不正确的回应:
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;
}
}
将特定于类型的代码移至子类,并修复getModel()以返回正确的域对象:
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");
}
}
链接地址: http://www.djcxy.com/p/61745.html
