struts.xml内容如下:
<package name="front" namespace="/" extends="json-default">
<action name="user" class="userAction">
<result type="json"></result>
</action>
</package>=======================================================Action:UserAction如下:
@Component("userAction")
@Scope("prototype")
public class UserAction extends ActionSupport {
private UserService userService;
private User user; public User getUser() {
return user;
} public void setUser(User user) {
this.user = user;
} @Resource(name="userService")
public void setUserService(UserService userService) {
this.userService = userService;
}

public String find() {
user = userService.findById(1);
return SUCCESS;
}
}=======================================================实体类User和Group如下:
@Entity
public class User  implements java.io.Serializable {
     private Integer id;
     private String username;
     private String password;
     private Group group;
     
     //...省略get和set
}
@Entity
public class Group  implements java.io.Serializable { 
     private Integer id;
     private String name;
     private Set<User> users = new HashSet<User>(0);     //...省略get和set
}=======================================================当访问action中的find方法时抛异常如下:
 Struts has detected an unhandled exception:
   Messages: 
   1. Class org.apache.struts2.json.JSONWriter can not access a member of class org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper with modifiers "public"=======================================================网上有说action中不能出现带接口的get方法.但我的action中只有一个userService属性是接口,而且只设置了set方法.并没有设置get方法.
也有说是因为两个类级联的缘故.我试了下,将User中的group属性去掉后,运行正常,前台能获得Json数据,但加上后就不行了.
这个是json插件的bug吗?还是要做一些其他配置?大家有谁碰到过此问题吗?

解决方案 »

  1.   

    友情 支持 我还在用 Struts 1。几的 呢 你走在我前面去了  以后 多多指教
      

  2.   

    问题 已解决 
    由于hibernate为实体类加上了hibernateLazyInitializer属性
    此属性无法由反射访问得到
    只要在配置中把hibernateLazyInitializer属性除外就行了
    <result type="json">
       <param name="excludeProperties">.*hibernateLazyInitializer</param>
    </result>
      

  3.   

    很感谢2楼的回答,这个问题困扰我很久了!
    虽然我还是不懂在“配置中把hibernateLazyInitializer属性除外就行了”这句话的意思....
    百度去!