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

org.apache.struts2.json.JSONWriter can not access a member of class

阅读更多
转自:http://www.cnblogs.com/xiaoyaorensheng/archive/2013/01/02/2842302.html

偶遇一个问题:org.apache.struts2.json.JSONWriter can not access a member of class
org.apache.tomcat.dbcp.dbcp.PoolingDataSource$PoolGuardConnectionWrapper
with modifiers "public"。困扰了半天,找到了解决方案,写写自己的一些理解。

action代码:


1 package edu.bjfu.action;
2
3 import java.util.ArrayList;
4 import java.util.List;
5
6 import javax.annotation.Resource;
7
8 import org.apache.struts2.json.annotations.JSON;
9
10
11 import com.opensymphony.xwork2.ActionSupport;
12
13 import edu.bjfu.entity.Authority;
14 import edu.bjfu.service.AuthorityService;
15
16 public class AuthoritiesAction extends ActionSupport{
17     private AuthorityService authorityService;
18     private List<Authority> authorities;
19
20     public List<Authority> getAuthorities() {
21         return authorities;
22     }
23
24     public void setAuthorities(List<Authority> authorities) {
25         this.authorities = authorities;
26     }
27     public AuthorityService getAuthorityService() {
28         return authorityService;
29     }
30
31     @Resource(name="authorityService")
32     public void setAuthorityService(AuthorityService authorityService) {
33         this.authorityService = authorityService;
34     }
35    
36     public String execute() throws Exception {
37         authorities=authorityService.getAllAuthorities();
38         return SUCCESS;
39     }
40    
41 }



配置文件代码:

1 <package name="super_admin" extends="json-default" namespace="/superadmin">
2         <action name="allAuthorities" class="edu.bjfu.action.AuthoritiesAction">
3             <result type="json"></result>
4         </action>
5 </package>
ajax交互代码:


1 $(function(){
2     $.post("superadmin/allAuthorities?dt="+new Date().getTime(),
3         function(data){
4             $("#authority").empty();
5             var json = eval(data);
6             for(var i=0;i<json.length;i++){
7                 $("#authority").append("<option value='"+json[i].authorityId+"'>"+json[i].authorityName+"</option>");
8             }
9         },"json")
10 })

这样每次在交互的时候就会发生以上错误。

主要原因:struts会将action中定义的一些变量序列化转换成json格式,需要调用对象的一系列get方法(例子中调用authorityService和authorities的get方法),并调用以上两个变量的成员变量的get方法将其内容组成json格式。但是在序列化authorityService时,由于其成员变量中含有含有接口所以会报错。

解决方案:

1)修改配置文件:指定序列化的根节点,这样data就是从authorities的根节点以下的数据,不需要用data.authorities

1     <package name="super_admin" extends="json-default" namespace="/superadmin">
2         <action name="allAuthorities" class="edu.bjfu.action.AuthoritiesAction">
3             <result type="json"><param name="root">authorities</param></result>
4         </action>
5     </package>
2) 修改java代码:让编译器不对authorityService序列化

1     @JSON(serialize=false)
2     public AuthorityService getAuthorityService() {
3         return authorityService;
4     }
分享到:
评论

相关推荐

    org.json.jar包

    7. **其他辅助类**:`org.json.JSONStringer` 和 `org.json.JSONWriter` 提供了更灵活的方式来构建JSON对象,它们允许通过流式API构建复杂的JSON结构。`org.json.XML` 类则提供了XML与JSON之间的转换功能。 8. **...

    org.json.JSONObject引用依赖包

    除了`JSONObject`,`org.json`包还提供了其他类,如`JSONArray`用于处理JSON数组,`JSONStringer`和`JSONWriter`用于构建复杂的JSON结构,以及`JSONException`用于捕获处理JSON时可能出现的异常。这些工具类使得...

    org.json的依赖包

    标题中的“org.json的依赖包”指的是一个与Java开发相关的依赖包,主要包含了处理JSON(JavaScript Object Notation)数据的类库。JSON是一种轻量级的数据交换格式,被广泛用于Web服务和应用程序之间的数据传输。org...

    新版本org.json的jar包

    这个"新版本org.json的jar包"是针对2017年10月18日发布的org.json库的更新版本,旨在提供更稳定、更高效的JSON操作功能。 org.json库包含了一些核心类,如JSONObject、JSONArray、XML等,它们为JSON对象和数组提供...

    struts2--json包

    5. **自定义JSON序列化和反序列化**:Struts2允许我们通过实现`org.apache.struts2.json.JSONWriter`接口来自定义JSON序列化过程,或者通过`org.apache.struts2.json.JSONProcessor`接口自定义反序列化过程。...

    org.json源码及jar包

    `org.json`库不仅有`JSONObject`,还有其他类,如`JSONArray`用于表示JSON数组,`JSONException`用于处理与JSON相关的异常,`JSONStringer`和`JSONWriter`则提供更高效的JSON序列化方式。此外,`JSONArray`和`...

    org.json源代码

    org.json全部源代码 1、CDL.java 2、Cookie.java 3、CookieList.java 4、HTTP.java 5、HTTPTokener.java 6、JSONArray.java 7、JSONException.java 8、JSONML.java 9、JSONObject.java 10、JSONString.java 11、...

    json示例下载 +struts2

    7. **自定义JSON输出**:如果需要定制JSON的输出,比如忽略某些字段,可以通过实现`org.apache.struts2.json.JSONWriter`接口来自定义JSON序列化过程。 通过以上方式,你可以充分利用Struts2和JSON的特性,构建出...

    Struts2_JSON_Demo

    6. **自定义JSON转换**:如果默认的JSON序列化不符合需求,可以通过实现`org.apache.struts2.json.JSONWriter`接口来自定义JSON输出。 7. **安全性**:在使用JSON时,要注意防止XSS(跨站脚本攻击)和CSRF(跨站...

    googleGson JsonObject json转换包

    包含以下java源文件: com.google.gson.DefaultDateTypeAdapter.class com.google.gson.ExclusionStrategy.class ...com.google.gson.stream.JsonWriter.class com.google.gson.stream.MalformedJsonException.class

    org.json java处理json数据

    2. **JSONArray**:表示一个JSON数组,可以包含任意数量的JSON对象或其他类型(如字符串、数字等)。创建和操作JSONArray的方式类似JSONObject: ```java JSONArray arr = new JSONArray(); arr.put("Apple"); ...

    json.jar与org.json.jar包

    `org.json.jar`则是另一个流行的JSON库,它的全名是org.json项目,是由一个名为JSON.org的组织维护的。这个库同样包含`JSONObject`和`JSONArray`类,但提供了更丰富的功能,如支持JSON Schema、XML与JSON的转换,...

    org.json.*

    "org.json.*" 是一个与Java编程相关的主题,主要涉及的是JSON(JavaScript Object Notation)处理库。JSON是一种轻量级的数据交换格式,被广泛应用于Web服务和客户端应用程序之间的数据传输。在Java中,org.json包...

    org.json.zip

    `org.json.zip` 是一个与Java相关的库,主要用于生成和操作JSON(JavaScript Object Notation)数据。JSON是一种轻量级的数据交换格式,广泛应用于Web服务和应用程序之间传递数据。这个库提供了一系列方便的API,...

    org.jsonjar包

    **org.json.jar包详解** `org.json`是一个轻量级的JSON处理库,适用于Java开发者。这个jar包提供了处理JSON对象、数组、字符串等数据结构的API,使得在Java应用程序中解析、创建和操作JSON变得非常简单。在解压后的...

    org.json.jar

    `org.json.jar`是一个Java库,它为Java开发者提供了处理JSON的工具和类,使得在Java应用中进行JSON操作变得更为便捷。 `org.json.jar`库包含了以下主要组件: 1. **JSONObject**: 这是JSON对象的Java表示。一个...

    json-src.zip org.json源码

    2. **JSONArray**: 与JSONObject相对,JSONArray表示一个JSON数组,它包含一系列的值,这些值可以是其他JSON对象、数组或基本类型。`JSONArray`提供类似的方法如`add()`来添加元素,`get()`来获取指定索引的元素。 ...

Global site tag (gtag.js) - Google Analytics