如何指定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
相关推荐
在本文中,我们将探讨两种在Struts2框架中返回JSON数据的方法。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛用于前后端交互,尤其是在AJAX请求中。Struts2提供了一套方便的机制来支持JSON...
Struts2是一个非常流行的Java Web框架,...以上就是关于Struts2返回JSON数据类型的基本介绍和实现步骤。通过这些步骤,你可以轻松地在Struts2应用中实现从服务器向客户端传递JSON数据,从而提升Web应用的交互性和性能。
而在基于Spring3 MVC的架构下,对HTTP+JSON的返回类型也有很好的支持。但是,在开发工作中,对功能的升级是基于既定... Struts2返回JSON有两种方式:1.使用Servlet的输出流写入JSON字符串;2.使用Struts2对JSON的扩展。
本篇文章将详细讲解如何在Struts2中使用“json-default”拦截器来返回JSON数据。 首先,我们需要理解Struts2的拦截器(Interceptor)机制。拦截器是Struts2框架的核心组件之一,它们在Action执行前后执行特定的任务...
最后,前端JavaScript代码会接收到返回的JSON数据,并根据需要更新DOM(Document Object Model)。 总的来说,"struts2+json"资源涉及到了Struts2框架中的Action设计、拦截器机制、结果类型的配置,以及AJAX和JSON...
Struts2的JSON插件正是为了方便开发者在Struts2框架中处理JSON数据而设计的。 首先,让我们深入了解JSON。JSON是一种独立于语言的数据交换格式,具有易于人阅读和编写,同时也易于机器解析和生成的特点。它的数据...
4. 返回JSON数据:在Action的execute方法中,创建一个Map或自定义的Java对象,然后将其转化为JSON对象,最后通过ActionContext返回JSON结果。 **示例代码**: ```javascript // 前端Ajax请求 $.ajax({ url: '...
本篇文章将深入探讨如何在Struts2中通过注解实现返回JSON数据的功能。 首先,让我们理解JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。在Web应用中...
在这个"struts2+jquery执行ajax并返回json类型数据"的示例中,我们将探讨如何通过Ajax技术在后台Struts2框架与前端jQuery库之间交换JSON格式的数据。 首先,Struts2是一个强大的MVC(Model-View-Controller)框架,...
当Struts2处理完请求并返回JSON数据后,Ajax回调函数会接收到这些数据,然后可以动态更新DOM元素,实现页面的局部刷新。 **注意事项** 1. 在Struts2中,确保已经添加了JSON插件,如struts2-json-plugin,以便支持...
在本场景中,我们将探讨如何在Struts2中返回JSON数据,并在页面上使用jQuery库的`$.ajax`或`$.getJSON`方法来接收和处理这些数据。 首先,我们需要在Struts2中配置JSON结果类型。在`struts.xml`配置文件中,添加一...
在Action类中,我们需要创建一个返回JSON数据的方法。这个方法通常会设置模型驱动对象(ModelDriven)或值栈(ValueStack)中的属性,这些属性将在JSON响应中暴露。例如: ```java public class MyAction extends...
当服务器返回JSON数据时,前端的`success`回调函数会被调用,可以解析并使用这些数据。例如,上面的代码会将JSON对象打印到控制台。 这个例子中的`MovieProject`可能是一个完整的项目,包含HTML页面、jQuery脚本、...
在Android开发中,与服务器进行数据交互是常见的...而`Struts2_JSON_Demo`可能是一个Struts2的项目,实现了返回JSON数据的Action。通过这两个示例,你可以更直观地学习和理解Android与Struts2之间JSON数据交换的过程。
本示例主要探讨如何在Struts2框架中实现从服务器向客户端返回JSON数据。 首先,让我们了解JSON的基本结构。JSON是一种数据交换格式,它以键值对的形式存储数据,类似于JavaScript对象。例如: ```json { "name": ...
为了返回JSON数据,可以定义一个如下的Action方法: ```java public String getXxx() { return "aaa"; } ``` 当客户端调用此方法时,Struts2会自动将返回值 `"aaa"` 转换成JSON格式,即`{"xxx":"aaa"}`,发送回...
总结,Struts2和jQuery的Ajax JSON数据交换涉及以下几个关键步骤:配置Struts2的JSON插件,编写返回JSON数据的Action,使用jQuery发起Ajax请求并处理返回的JSON数据。通过这种方式,可以实现客户端与服务器之间的...
在Struts2中,我们可以配置Action类返回JSON类型的结果,这样当客户端(如Android应用)发起请求时,服务器会返回JSON格式的数据。这些数据可以包含对象、数组、字符串、数字等多种类型,非常适合移动设备上的数据...
2. **Action类的配置**:为了返回JSON响应,你的Action类需要返回一个特定的结果类型,例如`json`: ```java public class MyAction extends ActionSupport { // ... public String execute() { // ... return...