【转】Struts2与JSON资料学习合集

 

最近又搜了一些struts2和JSON的学习资料,发现某文库确实恶心。一些人上传别人的文章,把几篇合并成一篇,并且修改个名字就上传了。丝毫没留下原作者的任何信息,还敢收取那5积分。以下为自己通过搜索后,还原的3篇文章,确实写得不错,有很多值得参考的地方。但其实灵活运用才是最重要的地方,假设这些例子返回的JSON数据若遇到了比较复杂的情况时,即包含动态的和多种JSONArray的时候会比较麻烦或者难以实现。

用struts-plug返回的JSON,javascript获取的时候JSON会变成response的一个参数。如,返回的是一个命名为list的JSONArray,并是某个AJAX action中的属性。JavaScript要想获取list的JSON数据必须以 response.list的形式(response为AJAX返回的DATA)。

以下是转载正文:

--------------------------------------------------------------------------------

1.导入jsonplugin包 

  Struts2.1.6:导入jsonplugin-0.34.jar包(下载包)和commons-logging-1.0.4.jar(Struts2 lib下有) 
  Struts2.1.8导入struts2-json-plugin-2.1.8.1.jar(Struts2 lib下有) 
  Struts2.2.1导入struts2-json-plugin-2.2.1.jar(Struts2 lib下有) 

2.struts.xml中package 中extends="json-default" 
 

Java代码  
  1. <package name="json" namespace="/json" extends="json-default">  



3.result 中type="json" 
 

Java代码  
  1. <!-- 封装所有的get开头的方法 -->  
  2. <result type="json" name="user">  
  3. </result>  
  4.   
  5. <!-- 只包含user.id属性 -->  
  6. <result type="json" name="user">  
  7.     <param name="includeProperties">                 
  8.         user\.id  
  9.     </param>  
  10. </result>  
  11.   
  12. <!-- 返回user的JSON List列表,其中userInfosList是action中的一个List类型的属性,userInfosList \[\d+\]\. userName表示,userInfosList中存储的对象0..end的userName属性(list中存储的对象必须有userName属性)  
  13. -->  
  14. <result  name="success" type="json">  
  15. <param name="includeProperties">  
  16.     userInfosList\[\d+\]\.userName,userInfosList\[\d+\]\.password  
  17. </param>  
  18. </result>  
  19.   
  20. <!-- 不包含user属性 -->  
  21. <result type="json" name="list">  
  22.     <param name="excludeProperties">                 
  23.         user  
  24.     </param>  
  25. </result>  
  26.   
  27. <!-- 根对象只包含user -->  
  28. <result type="json">    
  29.     <param name="root">    
  30.         user  
  31.     </param>    
  32. </result>   
  33.   
  34. <!-- "root"对象中父类的field(属性)不会(会?) 默认存放到 JSON数据中,如果不想这样做,需要在配置时指定 ignoreHierarchy 为 false:  -->  
  35. <result type="json">    
  36.     <param name="ignoreHierarchy">false</param>    
  37. </result>   
  38.     



4.避免使用get开头的action方法 
  在属性get方法上面加 
  @JSON(name="newName")json中的名称 
  @JSON(serialize=false) 该属性不被加入json 
  @JSON(format="yyyy-MM-dd") 格式化日期 

5.在action中赋值,返回对应的result字符串 

说明: 
为什么要用includeProperties或excludeProperties 参数:主要是为了过滤掉接口,pojo的set、list、其它对象等不需要的数据防止循环取其它关联对象或找不到接口。如果不配置,默认是处理action中的所有属性,如果action中有接口注入,json拦截器可能找不到接口而返回不了结果,还有如果action中有一个对象,这个对象与好多对象都有关联,json拦截器会将相关联的所有对象的属性全部转换成json格式,如果其它对象有list、set,其返回结果相当庞大,有可能是死循环而无法返回 。如果不用<param name="includeProperties">或其他方式进行json数据过滤,通过debug你会发现前台返回的json字符串,是把action中的所有属性全部转化成json字符串返回给客户端(包括service接口、pojo所有属性及有关联的pojo。有时候根本返回不了结果,也不报错,后台执行了,但前台执行不到callback function,这主要是因为找不到接口或者关联的pojo太多,造成死循环),一般情况下用的最多的就是root、includeProperties 和excludeNullProperties参数。当然还有其他的方法,如给pojo的属性加json注解。 

总结: 
action中避免使用get开头的action方法,去掉action中的接口的get方法。 为json类型的result配置includeProperties, excludeProperties等参数. 




JSON 是一个插件,它允许我们在JavaScript中异步调用Action,它提供了一个json的返回结果类型(ResultType),只要为Action指定类型为

json返回结果类型,那么这个响应结果不需要返回给任何视图层,JSON会将Action里的状态信息序列化为JSON指定格式的数据,并将该数据返回

给JAVASCRIPT,这样可以完成AJAX的应用交互.
要应用 JSON 插件,首先需要到

 http://code.google.com/p/jsonplugin/downloads/list

下载最新JSON插件,我这里下载的是jsonplugin-

0.33.jar ,将该文件拷到WEB工程的LIB目录,当然还需要下载Struts2 类库,可以到http://struts.apache.org/download.cgi#struts2014

这里去下载,下载完后解压缩,将JAR拷到WEB工程的LIB目录,不能少于以下几个JAR文件(struts2-api-2.0.5.jar、struts2-core-2.0.5.jar、

ognl-2.6.9.jar、xwork-2.0.0.jar、commons-logging-1.1.jar、freemarker-2.3.8.jar,具体文件名视版本而定),接下来我们可以写个应用

来试验,本例程分为二步来写,第一步实现返回一个结果对象,第二步实现返回一个结果列表,首先来看下返回结果对象的实现.
我们需要先建立一个JavaBean 为值对象,用来将用户的基本数据封装进去,该实体在结果对象和结果列表中都会使用到
Users.java 代码如下:

Java代码  
  1. package com.jsontostruts2.vo;  
  2.   
  3. /** 
  4.  * <p> 
  5.  * 创 建 人:ChenTao 
  6.  * <p> 
  7.  * 创建日期:2009-5-18 下午05:24:48 
  8.  * <p> 
  9.  */  
  10. public class Users {  
  11.   
  12.     private Integer userId;  
  13.   
  14.     private String userName;  
  15.   
  16.     private String sex;  
  17.   
  18.     public Users() {  
  19.   
  20.     }  
  21.     // get... set.... 略......  
  22. }  

 

实现 UserAction.java 源码如下:

Java代码  
  1. package com.jsontostruts2.action;  
  2.   
  3. import com.googlecode.jsonplugin.annotations.JSON;  
  4. import com.jsontostruts2.vo.Users;  
  5. import com.opensymphony.xwork2.ActionSupport;  
  6.   
  7. /** 
  8.  * <p> 
  9.  * 创 建 人:ChenTao 
  10.  * <p> 
  11.  * 创建日期:2009-5-18 下午05:22:50 
  12.  * <p> 
  13.  */  
  14. @SuppressWarnings("serial")  
  15. public class UserAction extends ActionSupport {  
  16.   
  17.     private Users users;  
  18.       
  19.     @JSON(name="USER")  
  20.     public Users getUsers() {  
  21.         return users;  
  22.     }  
  23.   
  24.     public void setUsers(Users users) {  
  25.         this.users = users;  
  26.     }  
  27.   
  28.     @Override  
  29.     public String execute() throws Exception {  
  30.         users = new Users();  
  31.         users.setUserId(1);  
  32.         users.setUserName("ctojxzsycztao");  
  33.         users.setSex("男人");  
  34.         return SUCCESS;  
  35.     }  
  36.   
  37. }  

 

接下来我们需要配置 struts.xml 文件,为了在现下面不再重复写该文件,这里我将结果对象和列表的请求控制一并贴上来,文件内容:

Xml代码  
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE struts PUBLIC  
  3.     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"  
  4.     "http://struts.apache.org/dtds/struts-2.0.dtd">  
  5.   
  6. <struts>  
  7.     <!-- 注意这里扩展不再是 struts-default,而是 json-default -->  
  8.     <package name="jsonManager" extends="json-default">  
  9.         <!-- 返回结果类型为 json -->  
  10.         <action name="userJson" class="com.jsontostruts2.action.UserAction">  
  11.             <result type="json"/>  
  12.         </action>  
  13.         <!-- 该action在返回列表时添加进来的 -->  
  14.         <action name="jsonlist" class="com.jsontostruts2.action.UserListAction">  
  15.             <result type="json"/>  
  16.         </action>  
  17.           
  18.     </package>  
  19. </struts>  

 

能后创建web.xml 和 userjson.jsp:

Xml代码  
  1. web.xml :  
  2. <?xml version="1.0" encoding="UTF-8"?>  
  3. <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"  
  4.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  5.     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   
  6.     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  
  7.   
  8.     <filter>  
  9.         <filter-name>Struts2</filter-name>  
  10.         <filter-class>  
  11.             org.apache.struts2.dispatcher.FilterDispatcher  
  12.         </filter-class>  
  13.     </filter>  
  14.     <filter-mapping>  
  15.         <filter-name>Struts2</filter-name>  
  16.         <url-pattern>*.action</url-pattern>  
  17.     </filter-mapping>  
  18.     <filter-mapping>  
  19.         <filter-name>Struts2</filter-name>  
  20.         <url-pattern>*.jsp</url-pattern>  
  21.     </filter-mapping>  
  22.   
  23.     <welcome-file-list>  
  24.         <welcome-file>index.jsp</welcome-file>  
  25.     </welcome-file-list>  
  26. </web-app>  

 

userjson.jsp :

Html代码  
  1. <%@ page language="java" contentType="text/html;charset=UTF-8"%>  
  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  3. <html>  
  4.   <head>  
  5.     <title>json 返回对象处理</title>  
  6.     <script language="javascript">  
  7.         var xmlHttp = false;  
  8.         try{  
  9.             xmlHttp = new ActiveXObject("msxml2.XMLHTTP");  
  10.         }catch(e1){  
  11.             try{  
  12.                 xmlHttp = new ActiveXObject("microsoft.XMLHTTP");  
  13.             }catch(e2){  
  14.                 try{  
  15.                     xmlHttp = new XMLHttpRequest();  
  16.                 }catch(e3){  
  17.                     xmlHttp = false;  
  18.                 }  
  19.             }  
  20.         }  
  21.         if(!xmlHttp){  
  22.             alert("create xmlHttpRequest fail");  
  23.         }  
  24.         function jsonResult(){  
  25.             xmlHttp.onreadystatechange = function(){  
  26.                 if(xmlHttp.readyState == 4) {  
  27.                 // 将 JSON 对象转换为JSON字符串,需要注意调用eval函数时必须使用"("和")"将JSON字符串括起来,否  
  28.   
  29. 则会出错  
  30.                 var userObj = eval('(' + xmlHttp.responseText + ')');  
  31.                 var userStr = "<table border=0>";  
  32.                     userStr += '<tr><td><b>userId</b></td><td>' + userObj.USER.userId + '</td></tr>';  
  33.                     userStr += ('<tr><td><b>userName</b></td><td>' + userObj.USER.userName + '</td></tr>');  
  34.                     userStr += ('<tr><td><b>sex</b></td><td>' + userObj.USER.sex + '</td></tr>');  
  35.                     userStr += "</table>";  
  36.                     document.getElementById('jsonDiv').innerHTML = userStr;  
  37.                 }  
  38.             }  
  39.             xmlHttp.open("POST","userJson.action",true);  
  40.             xmlHttp.send(null);  
  41.         }  
  42.     </script>  
  43.   </head>  
  44.   <body>  
  45.     <div id="jsonDiv"></div>  
  46.     <input type="button" value="show" onclick="jsonResult();">  
  47.   </body>  
  48. </html>  

 

现在你可以将应用发布到你的容器当中输入 http://localhost:8080/struts2ToJson/userjson.jsp 点show,这个时候你可以看到你想要的结

果,接来实现下返回列表的做法,当然与返回对象会有所不同,我们需要将一个List对象转换为一个JSON规范的字符串,能后发送给客户端的JS,

首先建立一个将List 转换为指定字符串的工具类,该工具是在一个无意间从网上看到就拿来用了,经过少许修改,为了减少代码行数我将只贴

出适用于本示例的代码:
JsonUtil.java :

Java代码  
  1. package com.jsontostruts2.util;  
  2.   
  3. import java.beans.IntrospectionException;  
  4. import java.beans.Introspector;  
  5. import java.beans.PropertyDescriptor;  
  6. import java.util.List;  
  7.   
  8. /** 
  9.  * <p> 
  10.  * @author ChenTao 
  11.  * <p> 
  12.  * @Date 2009-5-18 下午05:47:27 
  13.  * <p> 
  14.  */  
  15. public class JsonUtil {  
  16.   
  17.     /** 
  18.      * @param object 
  19.      *            任意对象 
  20.      * @return java.lang.String 
  21.      */  
  22.     public static String objectToJson(Object object) {  
  23.         StringBuilder json = new StringBuilder();  
  24.         if (object == null) {  
  25.             json.append("\"\"");  
  26.         } else if (object instanceof String || object instanceof Integer) {  
  27.             json.append("\"").append((String)object).append("\"");  
  28.         } else {  
  29.             json.append(beanToJson(object));  
  30.         }  
  31.         return json.toString();  
  32.     }  
  33.   
  34.     /** 
  35.      * 功能描述:传入任意一个 javabean 对象生成一个指定规格的字符串 
  36.      *  
  37.      * @param bean 
  38.      *            bean对象 
  39.      * @return String 
  40.      */  
  41.     public static String beanToJson(Object bean) {  
  42.         StringBuilder json = new StringBuilder();  
  43.         json.append("{");  
  44.         PropertyDescriptor[] props = null;  
  45.         try {  
  46.             props = Introspector.getBeanInfo(bean.getClass(), Object.class)  
  47.                     .getPropertyDescriptors();  
  48.         } catch (IntrospectionException e) {  
  49.         }  
  50.         if (props != null) {  
  51.             for (int i = 0; i < props.length; i++) {  
  52.                 try {  
  53.                     String name = objectToJson(props[i].getName());  
  54.                     String value = objectToJson(props[i].getReadMethod().invoke(bean));  
  55.                     json.append(name);  
  56.                     json.append(":");  
  57.                     json.append(value);  
  58.                     json.append(",");  
  59.                 } catch (Exception e) {  
  60.                 }  
  61.             }  
  62.             json.setCharAt(json.length() - 1'}');  
  63.         } else {  
  64.             json.append("}");  
  65.         }  
  66.         return json.toString();  
  67.     }  
  68.   
  69.     /** 
  70.      * 功能描述:通过传入一个列表对象,调用指定方法将列表中的数据生成一个JSON规格指定字符串 
  71.      *  
  72.      * @param list 
  73.      *            列表对象 
  74.      * @return java.lang.String 
  75.      */  
  76.     public static String listToJson(List<?> list) {  
  77.         StringBuilder json = new StringBuilder();  
  78.         json.append("[");  
  79.         if (list != null && list.size() > 0) {  
  80.             for (Object obj : list) {  
  81.                 json.append(objectToJson(obj));  
  82.                 json.append(",");  
  83.             }  
  84.             json.setCharAt(json.length() - 1']');  
  85.         } else {  
  86.             json.append("]");  
  87.         }  
  88.         return json.toString();  
  89.     }  
  90. }  

 

UserListAction.java:

Java代码  
  1. package com.jsontostruts2.action;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.List;  
  5.   
  6. import com.googlecode.jsonplugin.annotations.JSON;  
  7. import com.jsontostruts2.util.JsonUtil;  
  8. import com.jsontostruts2.vo.Users;  
  9. import com.opensymphony.xwork2.ActionSupport;  
  10.   
  11. /** 
  12.  * <p> 
  13.  * 创 建 人:ChenTao 
  14.  * <p> 
  15.  * 创建日期:2009-5-18 下午05:45:42 
  16.  * <p> 
  17.  */  
  18. @SuppressWarnings("serial")  
  19. public class UserListAction extends ActionSupport {  
  20.       
  21.     /* 用于存放JSON生成后的字符串结果 */  
  22.     private String jsonResult;  
  23.   
  24.     @JSON(name="JSONRESULT")  
  25.     public String getJsonResult() {  
  26.         return jsonResult;  
  27.     }  
  28.   
  29.     public void setJsonResult(String jsonResult) {  
  30.         this.jsonResult = jsonResult;  
  31.     }  
  32.   
  33.     @Override  
  34.     public String execute() throws Exception {  
  35.         List<Users> userList = new ArrayList<Users>();  
  36.         Users users = new Users();  
  37.         users.setUserId(1);  
  38.         users.setUserName("ctojxzsycztao");  
  39.         users.setSex("男人");  
  40.         userList.add(users);  
  41.         users = null;  
  42.         users = new Users();  
  43.         users.setUserId(2);  
  44.         users.setUserName("rain");  
  45.         users.setSex("女人");  
  46.         userList.add(users);  
  47.         users = null;  
  48.         users = new Users();  
  49.         users.setUserId(3);  
  50.         users.setUserName("mimi");  
  51.         users.setSex("女人");  
  52.         userList.add(users);  
  53.         jsonResult = JsonUtil.listToJson(userList);  
  54.         System.out.println(jsonResult);  
  55.         return SUCCESS;  
  56.     }  
  57. }  

 

接下来将要写一个jsonList.JSP页面来将结果承现给用户

Html代码  
  1. <%@ page language="java" contentType="text/html;charset=UTF-8"%>  
  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  3. <html>  
  4.   <head>  
  5.     <title>json 返回列表处理</title>  
  6.     <script language="javascript">  
  7.         var xmlHttp = false;  
  8.         try{  
  9.             xmlHttp = new ActiveXObject("msxml2.XMLHTTP");  
  10.         }catch(e1){  
  11.             try{  
  12.                 xmlHttp = new ActiveXObject("microsoft.XMLHTTP");  
  13.             }catch(e2){  
  14.                 try{  
  15.                     xmlHttp = new XMLHttpRequest();  
  16.                 }catch(e3){  
  17.                     xmlHttp = false;  
  18.                 }  
  19.             }  
  20.         }  
  21.         if(!xmlHttp){  
  22.             alert("create xmlHttpRequest fail");  
  23.         }  
  24.         function jsonListResult(){  
  25.             xmlHttp.onreadystatechange = function(){  
  26.                 if(xmlHttp.readyState == 4) {  
  27.                     var userList = eval('(' + xmlHttp.responseText + ')');  
  28.                     var user = eval(userList.JSONRESULT);  
  29.                     var result = "<table border=0>";  
  30.                     result += "<tr><td>userId</td><td>userName</td><td>sex</td></tr>";  
  31.                     for(var i=0;i<user.length;i++) {  
  32.                         result += "<tr>";  
  33.                         result += "<td>"+user[i].userId +"</td>";  
  34.                         result += "<td>"+user[i].userName+"</td>";  
  35.                         result += "<td>"+user[i].sex+"</td>";  
  36.                         result += "</tr>";  
  37.                     }  
  38.                     result += "</table>";  
  39.                     document.getElementById('jsonDiv').innerHTML = result;  
  40.                 }  
  41.             }  
  42.             xmlHttp.open("POST","jsonlist.action",true);  
  43.             xmlHttp.send(null);  
  44.         }  
  45.     </script>  
  46.   </head>  
  47.   <body>  
  48.     <div id="jsonDiv"></div>  
  49.     <input type="button" value="show list" onclick="jsonListResult();">  
  50.   </body>  
  51. </html>  

 现在将工程重复部署到WEB容器,启动:在浏览器中输入 http://localhost:8080/struts2ToJson/jsonList.jsp 点 show list按钮,看看结果

是否正确,如果不正确请参考本例程,看看有没漏掉部分没有配置进去,在以上代码中我们都有看到 @JSON 的注解,该注解可以改变JSON返回结果的属性名,好了文章就写到这里,需要下载示例的朋友可在附件中下载,里面包含有该文章的源代码和相应的 JAR



首先在http://code.google.com/p/jsonplugin/downloads/list下载jsonplugin-0.34.jar

之后将jsonplugin-0.34.jar放入WEB-INF/lib

 

之后使用prototype.js

 

Action代码

 

Java代码  
  1. package com.platform.Action.SDCategory;  
  2.   
  3. import java.util.HashMap;  
  4. import java.util.Map;  
  5.   
  6. import com.googlecode.jsonplugin.annotations.JSON;  
  7. import com.opensymphony.xwork2.ActionSupport;  
  8.   
  9. public class JsonExampleAction extends ActionSupport  
  10. {  
  11.     private String field1;  
  12.     private transient String field2;  
  13.     private String field3;  
  14.       
  15.     private int[] ints = {10,20};  
  16.     private Map map = new HashMap();  
  17.     private String customName = "fini";  
  18.     public String getField1()  
  19.     {  
  20.         return field1;  
  21.     }  
  22.     public void setField1(String field1)  
  23.     {  
  24.         this.field1 = field1;  
  25.     }  
  26.     public String getField2()  
  27.     {  
  28.         return field2;  
  29.     }  
  30.     public void setField2(String field2)  
  31.     {  
  32.         this.field2 = field2;  
  33.     }  
  34.     public String getField3()  
  35.     {  
  36.         return field3;  
  37.     }  
  38.     public void setField3(String field3)  
  39.     {  
  40.         this.field3 = field3;  
  41.     }  
  42.     public int[] getInts()  
  43.     {  
  44.         return ints;  
  45.     }  
  46.     public void setInts(int[] ints)  
  47.     {  
  48.         this.ints = ints;  
  49.     }  
  50.     public Map getMap()  
  51.     {  
  52.         return map;  
  53.     }  
  54.     public void setMap(Map map)  
  55.     {  
  56.         this.map = map;  
  57.     }  
  58.     @JSON(name="newName")  
  59.     public String getCustomName()  
  60.     {  
  61.         return customName;  
  62.     }  
  63.     public void setCustomName(String customName)  
  64.     {  
  65.         this.customName = customName;  
  66.     }  
  67.       
  68.       
  69.     public String execute() throws Exception  
  70.     {  
  71.         map.put("name""fuck");  
  72.         return SUCCESS;  
  73.     }  
  74. }  

 

struts.xml

 

Xml代码  
  1. <package name="json" extends="json-default">  
  2.         <action name="QueryChildCategory" class="QueryChildCategoryAction">  
  3.             <result type="json"></result>  
  4.         </action>  
  5.     </package>  

 

 

jsp页面

Html代码  
  1. <script src="prototype.js" type="text/javascript"></script>  
  2.         <script type="text/javascript">  
  3.             function gotClick()  
  4.             {  
  5.                 var url = 'JsonExample.action';  
  6.                 var params = Form.serialize('form1');  
  7.                 var myAjax = new Ajax.Request(url,{method:'post',parameters:params,onComplete:processResponse,asynchronous:true});  
  8.             }  
  9.             function processResponse(request)  
  10.             {  
  11.                 var json = request.responseText  
  12.     var jsonData = eval("("+json+")");  
  13.     document.getElementById("show").innerHTML=jsonData["field1"];           }  
  14.         </script>  
  15. <form id="form1" name="form1" method="post">  
  16.                 <input type="text" name="field1" id="field1"/><br>  
  17.                 <input type="text" name="field2" id="field2"/><br>  
  18.                 <input type="text" name="field3" id="field3"/><br>  
  19.                 <input type="button" value="提交" onClick="gotClick();"/>  
  20.             </form>  
  21.             <div id="show"></div>  

 

 

 或链接调用

Html代码  
  1. script src="prototype.js" type="text/javascript"></script>  
  2.         <script type="text/javascript">  
  3.             function gotClick()  
  4.             {  
  5.                 var url = 'JsonExample.action?no-cache='+Math.random();  
  6.                 var params = "";  
  7.                 var myAjax = new Ajax.Request(url,{method:'get',parameters:params,onComplete:processResponse});  
  8.             }  
  9.             function processResponse(request)  
  10.             {  
  11.                 var json = request.responseText  
  12.                 var jsonData = eval("("+json+")");  
  13.                 //document.getElementById("show").innerHTML=jsonData["fuck"];  
  14.                 document.getElementById("show").innerHTML=request.responseText;  
  15.             }  
  16.         </script>  
  17. <a href="javascript:void(0)" onclick="gotClick();">afafa</a>  
  18.             <div id="show"></div>  

 var url = 'JsonExample.action?no-cache='+Math.random();无缓存

 

由于json-plugin会把action中的所有getter方法的属性序列化成json串,所以在整合spring开发时,需要将actionservice对象的getter方法去掉,或者在前面增加@JSON(serialize=false),否则页面会报错com.googlecode.jsonplugin.JSONException: java.lang.reflect.InvocationTargetException

你可能感兴趣的:(struts2)