`
fireq3
  • 浏览: 38100 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

struts2 action返回json类型数据

 
阅读更多

本文开发环境是SSH2,ajax插件使用jQuery 1.2.6.js和json2.js

实现目的:

在struts2 标签s:doubleselect二级联动标签的基础上实现事件:第二级onchange时调用struts2 action,在action中查询一个名称,然后返回回来,此信息显示在页面上(这只是给用户一个提示信息,不影响表单能否提交)

 

由于struts2 doubleselect标签任何事件都不起作用,只能根据查看源文件中生成的id来定义它的onchange事件

 

 

 jsp页面引入了jquery.js和json2.js

 

需要加事件的二级联动jsp代码

 

 

[java] view plaincopy
 
  1. <td class="alignLeft" width="22%">  
  2.         所属业务/项目名称:  
  3.     </td>  
  4.     <td valign="top" class="alignLeft" width="20%">  
  5.         <s:doubleselect name="changeApplyFormBO.operationId" list="operationList" listKey="id"  
  6.         listValue="operationName" doubleList="operationSubProductList"   
  7.         doubleListKey="id" doubleListValue="prudName"  doubleName="changeApplyFormBO.productId"  
  8.         headerKey=""  headerValue="--- Please Select ---" />    
  9.     <span id="company" style="color:red"></span>  
  10.     </td>  

 

 

 

 

我们需要在“项目名称”被改变的事件下调用函数,在生成的静态页面中查得它的id是cbApplySubmit_changeApplyFormBO_productId

说明一下,这里生成的id有一点规律,貌似。cbApplySubmit是本页面form表单的action,而changeApplyFormBO.productId是“项目名称”的name

 

 

 

下面给出定制下拉菜单事件的js

 

 

[javascript] view plaincopy
 
  1. <script>  
  2.       
  3.       $(function(){  
  4.           var obj=document.getElementById("cbApplySubmit_changeApplyFormBO_productId");  
  5.           obj.onchange=function(){      
  6.            var prodId=obj.value;  
  7.            var url="${contextPath}/assets/businessChange/ajaxGetCompany.do";  
  8.            var jsonProd={productId:prodId};    //JSON对象      
  9.            var prodStr=JSON.stringify(jsonProd);    //将JSON对象转变成JSON格式的字符串  
  10.            $.post(url,{json:prodStr},callback,"json");   
  11.           }  
  12.         function callback(json){     
  13.             $("#company").html(json.msg);  
  14.          }   
  15.      });   
  16.       
  17. </script>  

 

 

这里,不管是从浏览器端(JS,Ajax,Jquery等)发送给服务器端,还是从服务器端(Struts的Action,Servlet等)发送回客户端,发送的都是JSON格式的字符串

 

 

 

[javascript] view plaincopy
 
  1. var jsonProd={productId:prodId};  

 

 

这句是组装JSON对象,这里很简单,key是productId,value是页面选择的项目名称的id

 

 

 

 

[javascript] view plaincopy
 
  1. //将JSON对象转变成JSON格式的字符串  
  2. var prodStr=JSON.stringify(jsonProd);   

 

 

通过JavaScript内置对象JSON的stringify方法,将JSON对象转换成字符串。因为,我们传送给服务器端的要是JSON格式的字符串。

 

 

 

 

 

[javascript] view plaincopy
 
  1. $.post(url,{json:prodStr},callback,"json");   

 

 

这一句,jquery用POST方法向服务器端发送数据,url是我们要调用的action全路径,而{json:prodStr}是我们要发送的数据(data),{json:prodStr},其实也是一个JSON对象,Key:value的形式,注意,我们把prodStr这个json串发过去,在Action那里接收时,要接收“json”这个变量,这个变量的值就是我们发送的prodStr字符串。

回调函数(callback)是指服务器端成功返回时,在JS端执行的函数。最后一个参数“json”是返回数据类型的一种,另外,还有”text”、“xml”等

 

 

 

 

[javascript] view plaincopy
 
  1. function callback(json){     
  2.         $("#company").html(json.msg);  
  3.      }   
  4.  });  

 

 

company是span的id,请看最上面二级联动标签处。这个函数用来显示action中组装的json对象的value值

 

 

 

 

struts2 action类

 

 

[java] view plaincopy
 
  1. import org.json.JSONObject;  
  2.   
  3. public class CBApplyAction extends ActionSupport {  
  4.     private IProductMng productMng;  
  5.     private String json;  
  6.     /** 
  7.      * 通过选择的项目名称,给出提示事业部名称的提示信息 
  8.      *  
  9.      * @return 
  10.      * @throws Exception 
  11.      */  
  12.     public void ajaxGetCompany() throws Exception {  
  13.         JSONObject jsonObj = new JSONObject(json); // 将JSON格式的字符串构造成JSON对象  
  14.           
  15.         String productId = jsonObj.getString("productId"); // 获取JSON对象中的productId属性的值  
  16.           
  17.         ProductBO prod = productMng.loadProduct(Integer.parseInt(productId));  
  18.         Integer companyId = prod.getCompanyId();  
  19.         CompanyBO comp = productMng.loadCompany(companyId);  
  20.         String companyName = "事业部为:" + comp.getName();  
  21.         json = "{msg:'" + companyName + "'}";    //构造JSON格式的字符串     
  22.         sendMsg(json);    //发送JSON格式的字符串回JS端      
  23.     }  
  24.       
  25.     public void sendMsg(String content) throws IOException{      
  26.         HttpServletResponse response = ServletActionContext.getResponse();      
  27.         response.setCharacterEncoding("UTF-8");      
  28.         response.getWriter().write(content);      
  29.     }    
  30.   
  31.     public String getJson() {  
  32.         return json;  
  33.     }  
  34.   
  35.     public void setJson(String json) {  
  36.         this.json = json;  
  37.     }  
  38.   
  39.     public void setProductMng(IProductMng productMng) {  
  40.         this.productMng = productMng;  
  41.     }    
  42. }  

  

 

 

 

JSONObject是我从json的网站http://www.json.org/java/index.html上下载了一些java文件,然后将这些.java文件打成一个jar包json.jar,放在项目lib里面

 

ajaxGetCompany方法没有像struts2 别的方法那样有返回值String,这里设的是void,因我们不需要任何跳转

 

这里有个需要注意的,json = "{msg:'" + companyName + "'}"; companyName外面应该有引号括起来

 

 

 

 

struts2 配置文件

 

[java] view plaincopy
 
  1. <action name="ajaxGetCompany" class="CBApplyAction"  
  2.     method="ajaxGetCompany">  
  3. </action>  

 

 

没有result

 

 

 

暂时没找到csdn传附件的地方

所用到的js文件和jar包在这里下载,我放到javaeye博客里去了

 

 下载文件:

http://hardwin.javaeye.com/blog/484951

分享到:
评论

相关推荐

    struts2返回JSON数据的两种方式

    在本文中,我们将探讨两种在Struts2框架中返回JSON数据的方法。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛用于前后端交互,尤其是在AJAX请求中。Struts2提供了一套方便的机制来支持JSON...

    android接收json例子struts2Action返回json格式数据

    在Android开发中,与服务器进行数据交互是常见的...而`Struts2_JSON_Demo`可能是一个Struts2的项目,实现了返回JSON数据的Action。通过这两个示例,你可以更直观地学习和理解Android与Struts2之间JSON数据交换的过程。

    struts2 action 返回json方法(一)源码

    本篇将详细讲解如何在Struts2中配置Action来返回JSON响应。 首先,我们需要了解Struts2的Result类型。默认情况下,Action会返回一个JSP页面作为结果,但通过配置,我们可以让Action返回JSON数据。这需要使用到一个...

    struts2返回json

    在Struts2中,返回JSON(JavaScript Object Notation)数据类型是一种常见的需求,尤其是在开发AJAX或者前后端分离的应用时。JSON是一种轻量级的数据交换格式,它允许服务器向客户端发送结构化的数据,而无需解析...

    AJAX 想Struts2后台传送Json数据并向前台返回Json格式的数据

    1. 配置Struts2:在struts.xml配置文件中,为Action添加一个JSON结果类型,这样Struts2将会返回JSON响应。 2. 接收JSON数据:在Action类的setter方法中,使用@Param注解接收JSON参数。 3. 处理业务逻辑:在Action中...

    struts2+json

    当Action执行完毕后,可以返回一个JSON结果类型,Struts2会自动将Action的属性转换为JSON格式并返回给前端。 接着,我们讨论AJAX。AJAX是一种在不重新加载整个网页的情况下,能够更新部分网页的技术。在本资源中,...

    struts2返回json数据的方法一 使用json-default

    本篇文章将详细讲解如何在Struts2中使用“json-default”拦截器来返回JSON数据。 首先,我们需要理解Struts2的拦截器(Interceptor)机制。拦截器是Struts2框架的核心组件之一,它们在Action执行前后执行特定的任务...

    Struts2使用Annotation返回Json

    本篇文章将深入探讨如何在Struts2中通过注解实现返回JSON数据的功能。 首先,让我们理解JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。在Web应用中...

    struts2+jquery执行ajax并返回json类型数据(源码)

    在这里,使用`$.ajax()`方法设置请求参数,例如URL(指向你的Struts2 Action),请求类型(通常是POST或GET),以及期望的数据类型('application/json')。 4. **jQuery的Ajax回调**:定义一个成功的回调函数,当...

    struts2返回json数据用query在页面接收

    在本场景中,我们将探讨如何在Struts2中返回JSON数据,并在页面上使用jQuery库的`$.ajax`或`$.getJSON`方法来接收和处理这些数据。 首先,我们需要在Struts2中配置JSON结果类型。在`struts.xml`配置文件中,添加一...

    使用Struts2的JSON插件来实现JSON数据传递

    启用插件后,你可以定义一个Struts2的动作(Action),并声明返回类型为`json`。例如: ```java public class MyAction extends ActionSupport { private String message; // Getters and Setters @Override ...

    struts2的方式返回json到jsp页面 List,Map,Object,对象各种操作都有....MyEclipse的,导入直接看效果。

    jsp通过Ajax无刷新获取Action返回的模拟数据,然后通过struts2转化成json数据返回页面....这里面Map,List,对象等等,一些常用的操作都有。主要的代码在Action和 json.js里面。适合新手入门

    Struts2中使用JSON数据格式所需全部jar包

    1. `struts2-json-plugin-x.x.x.jar`:这是Struts2的JSON插件,提供JSON动作结果类型和相关的拦截器,使得Action可以直接返回JSON响应。例如,如果Action返回一个Map或List,这个插件会自动将其转换为JSON格式。 2....

    Struts2+Json+Android简单实现

    在Struts2中,我们可以配置Action类返回JSON类型的结果,这样当客户端(如Android应用)发起请求时,服务器会返回JSON格式的数据。这些数据可以包含对象、数组、字符串、数字等多种类型,非常适合移动设备上的数据...

    struts2-json-plugin源码

    `struts2-json-plugin`添加了JSON结果类型,当Action返回此类型时,会将结果转换为JSON格式。 2. **JSONResult类**:这是实现JSON结果类型的核心类,它继承自`com.opensymphony.xwork2.Result`接口。在执行过程中,...

    json-lib-2.1.jar和struts2-json-plugin-2.1.8.1.jar

    这个插件允许开发者在Struts 2中轻松地创建能够返回JSON的Action,使得前端(通常使用JavaScript库如jQuery)可以获取到JSON数据并进行进一步处理。 现在我们来详细讨论这两个库在实际应用中的作用: 1. **json-...

    struts2与json整合

    这样,Struts2就能够识别`json`类型的结果,并使用`JSONResult`来将Action返回的数据转换成JSON格式。 #### 3. 定义Action方法 在Struts2中,Action类中的方法负责处理来自客户端的请求。为了返回JSON数据,可以...

    struts2返回json格式的数据练习

    在"struts2返回json格式的数据练习"这个实例中,我们将学习如何配置Struts2框架以支持JSON输出,并创建一个简单的示例来展示这一过程。 首先,我们需要在Struts2项目的`pom.xml`文件中添加JSON插件依赖。Struts2的...

    JQuery发送Ajax请求Struts2,并返回JSON的例子

    在Struts2中,我们可以配置Action类来处理Ajax请求,并以JSON格式返回数据。 以下是一个简单的示例步骤: 1. **前端设置**: 在HTML页面中,使用jQuery发起Ajax请求。例如: ```javascript $.ajax({ url: ...

Global site tag (gtag.js) - Google Analytics