如何指定struts2返回我们需要的json类型数据?

编程技术  /  houtizong 发布于 3年前   97

如何指定struts2返回我们需要的json类型数据?

今天下午做项目的时候,明明可以查到数据,可是就是没有在客户端进行显示,把所有前台代码扫了几遍,都不能找到原因,通过查看返回的json代码,发现有很多多余的返回内容,也就是这些多余的返回内容造成了前台解析的错误,经过上网查询找到了解决的办法:

处理请求的Action:

 

package com.hpu.action;import java.util.List;import javax.annotation.Resource;import com.hpu.pojo.Commodity;import com.hpu.service.CommodityService;import com.opensymphony.xwork2.ActionSupport;public class CommodityAction extends ActionSupport {private Double agio;private List<Commodity> commodities;private CommodityService commodityService;private Integer limit;private String msg;private String name;private Double price;private Integer recordSize;private Integer start;private boolean success;/**商品信息录入 * @author qinrui * @see commodityService * @return String */public String add() {// 根据商品名获取商品Commodity commodity = commodityService.loadByName(name);// 商品不存在,将新商品保存起来if(commodity == null) {// 创建商品对象 commodity = new Commodity();// 设定商品属性commodity.setName(name);commodity.setPrice(price);commodity.setAgio(agio);// 保存商品commodityService.save(commodity);success = true;msg = "商品录入成功";} else {success = false;msg = "商品已经存在";}return SUCCESS;}public Double getAgio() {return agio;}public List<Commodity> getCommodities() {return commodities;}public Integer getLimit() {return limit;}public String getMsg() {return msg;}public String getName() {return name;}public Double getPrice() {return price;}public Integer getRecordSize() {return recordSize;}public Integer getStart() {return start;}public boolean isSuccess() {return success;}public String query() {recordSize = commodityService.loadCommodities().size();commodities = commodityService.loadCommodities(start , limit);for(Commodity c : commodities) {System.out.println(c.getName());}return SUCCESS;}public void setAgio(Double agio) {this.agio = agio;}public void setCommodities(List<Commodity> commodities) {this.commodities = commodities;}@Resource(name="commodityServiceImpl")public void setCommodityService(CommodityService commodityService) {this.commodityService = commodityService;}public void setLimit(Integer limit) {this.limit = limit;}public void setMsg(String msg) {this.msg = msg;}public void setName(String name) {this.name = name;}public void setPrice(Double price) {this.price = price;}public void setRecordSize(Integer recordSize) {this.recordSize = recordSize;}public void setStart(Integer start) {this.start = start;}public void setSuccess(boolean success) {this.success = success;}}

 我需要查询所有的Commodity,所有要调用query方法,也就是我要返回的内容只需要commodities与recordCode,就行了,可是如果不在struts.xml进行相应的配置,它就会返回所有内容,包括值为null的,那怎样才能让它按照自己的需求返回值呢?下面给出相应的strtus.xml配置:

 

 

<action name="commodity_query" class="com.hpu.action.CommodityAction" method="query"><result type="json"><param name="includeProperties">commodities.*,recordSize</param></result></action>

 解释:由于commodities是个集合类型,如果只写上commodities的话,就会返回一个空的集合,而要返回集合里面的元素就要改成commodities.*,而要返回值中间使用逗号作为间隔符,includeProperties表示要返回内容,如果想要去掉不想要的内容使用excludeProperties即可。

 

参考文章:http://biancheng.dnbcw.info/java/408867.html

 

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!

留言需要登陆哦

技术博客集 - 网站简介:
前后端技术:
后端基于Hyperf2.1框架开发,前端使用Bootstrap可视化布局系统生成

网站主要作用:
1.编程技术分享及讨论交流,内置聊天系统;
2.测试交流框架问题,比如:Hyperf、Laravel、TP、beego;
3.本站数据是基于大数据采集等爬虫技术为基础助力分享知识,如有侵权请发邮件到站长邮箱,站长会尽快处理;
4.站长邮箱:[email protected];

      订阅博客周刊 去订阅

文章归档

文章标签

友情链接

Auther ·HouTiZong
侯体宗的博客
© 2020 zongscan.com
版权所有ICP证 : 粤ICP备20027696号
PHP交流群 也可以扫右边的二维码
侯体宗的博客