我有一个模型驱动的 Struts2 操作,可提供正确的 JSON 响应。当我重新构建操作时,我得到一个空的 JSON 响应。有没有人继承使用 Struts2 模型驱动的动作?
我尝试在 struts 配置中明确设置包含属性:
<结果名称="json" 类型="json"> <param name="includeProperties"> json响应 </param> </结果>
下面所有操作的代码 - 不是实际使用的代码 - 为了清楚起见,我已经编辑和剥离。
提前致谢。
提供正确响应的操作:
公共类 Bike 扩展 ActionSupport 实现 ModelDriven,Preparable { @Autowired 私人服务自行车服务; 私人 JsonResponse jsonResponse; 私人 com.ets.model.Vehicle 自行车; 私人 int id; 公共自行车(){ jsonResponse = new JsonResponse("Bike"); } @覆盖 公共无效准备()抛出异常{ 如果(id == 0){ 自行车 = 新的 com.ets.model.Bike(); } 别的 { 自行车 = bikeService.find(id); } } @覆盖 公共对象 getModel() { 归还自行车; } 公共无效setId(int id){ 这个.id = id; } 公共无效setBikeService(@Qualifier(“bikeService”)服务bikeService){ this.bikeService = 自行车服务; } 公共 JsonResponse getJsonResponse() { 返回json响应; } 公共字符串删除(){ 尝试 { 自行车.setDeleted(新日期(System.currentTimeMillis())); bikeService.updateOrSave(自行车); jsonResponse.addActionedId(id); jsonResponse.setAction("删除"); jsonResponse.setValid(true); } 捕捉(异常异常){ jsonResponse.setMessage(exception.toString()); } 返回“json”; } }
提供不正确响应的重组操作:
公共抽象类 Vehicle 扩展 ActionSupport 实现 ModelDriven { @Autowired 受保护的服务自行车服务; @Autowired 受保护的服务汽车服务; 受保护的 JsonResponse jsonResponse; 受保护的 com.ets.model.Vehicle 车辆; 受保护的 int id; 受保护的抽象服务服务(); @覆盖 公共对象 getModel() { 归还自行车; } 公共无效setId(int id){ 这个.id = id; } 公共无效setBikeService(@Qualifier(“bikeService”)服务bikeService){ this.bikeService = 自行车服务; } 公共无效 setCarService(@Qualifier("carService") 服务 carService) { this.carService = 汽车服务; } 公共 JsonResponse getJsonResponse() { 返回json响应; } 公共字符串删除(){ 尝试 { 车辆.setDeleted(新日期(System.currentTimeMillis())); 服务()。更新或保存(车辆); jsonResponse.addActionedId(id); jsonResponse.setAction("删除"); jsonResponse.setValid(true); } 捕捉(异常异常){ jsonResponse.setMessage(exception.toString()); } 返回“json”; } } 公共类 Bike 扩展 Vehicle 实现 Preparable { 公共自行车(){ jsonResponse = new JsonResponse("Bike"); } @覆盖 公共无效准备()抛出异常{ 如果(id == 0){ 车辆 = 新 com.ets.model.Bike(); } 别的 { 车辆 = bikeService.find(id); } } @覆盖 受保护的服务服务(){ 返还自行车服务; } } 公共类 Car 扩展 Vehicle 实现 Preparable { 公共汽车(){ jsonResponse = new JsonResponse("汽车"); } @覆盖 公共无效准备()抛出异常{ 如果(id == 0){ 车辆 = 新的 com.ets.model.Car(); } 别的 { 车辆 = carService.find(id); } } @覆盖 受保护的服务服务(){ 还车服务; } }