JSON报错:can not access a member of class * with modifiers "public"

唱戏周 2014-10-14 08:24:32
这个问题网上回答很多了,但是我的问题一直没有得到解决。

完整的异常信息:Class org.apache.struts2.json.JSONWriter can not access a member of class org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper with modifiers "public"。

Action代码:

public class QManageAction extends ActionSupport {
@Autowired
private QuestionnaireManageService questionnaireManageService;

private Map<String, Object> dataMap;

public QManageAction(){
dataMap = new HashMap<>();
}

public String displayAllQ() {
dataMap.clear();
Integer userId = 1;
Set<Questionnaire> questionnaires = questionnaireManageService.getQuestionnairesByUserId(userId);
dataMap.put("success", true);
dataMap.put("questionnaires", questionnaires);
return SUCCESS;
}

public String changeQStatus() {
dataMap.clear();
Integer questionnaireId = 1;
Integer changedStatus = 1;
Questionnaire changedStatusQ = questionnaireManageService.modifyQuestionnaireStatusById(questionnaireId, changedStatus);
dataMap.put("success", true);
dataMap.put("changedStatusQ", changedStatusQ);
return SUCCESS;
}

public Map<String, Object> getDataMap() {
return dataMap;
}
}


Service代码:

public class QuestionnaireManageService {
@Autowired
private UserBasicDAO userBasicDAO;
@Autowired
private QuestionnaireDAO questionnaireDAO; //两个DAO是Hibernate自动生成的。

public Set<Questionnaire> getQuestionnairesByUserId(Integer userId) {
Set<Questionnaire> resultQuestionnaires = new HashSet<>();

UserBasic userBasic = (UserBasic) userBasicDAO.findById(userId);
Set<Survey> userSurveys = userBasic.getSurveies();
Iterator<Survey> surveysIterator = userSurveys.iterator();
while (surveysIterator.hasNext()) {
Survey survey = (Survey) surveysIterator.next();
Questionnaire questionnaire = (new ArrayList<Questionnaire>(survey.getQuestionnaires())).get(0);
resultQuestionnaires.add(questionnaire);
}
return resultQuestionnaires;
}

public Questionnaire modifyQuestionnaireStatusById(Integer questionnaireId, Integer changedStatus) {
Questionnaire questionnaire = questionnaireDAO.findById(questionnaireId);
if (questionnaire.getQnaireStatus() != changedStatus) {
questionnaire.setQnaireStatus(changedStatus);
} else {

}
return questionnaire;
}
}


奇怪的是:我调用action里面的displayAllQ方法是成功的。而调用changeQStatus则是失败的,并报如上异常。

网上的解答方向是:action里面的接口没有实现序列化方法,要对其get方法进行处理。但是不符合我的情况。

是否可能是延时加载lazy=“false”的原因呢?
...全文
824 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
我来拿分哈!
唱戏周 2014-10-14
  • 打赏
  • 举报
回复
依照:http://www.myexception.cn/javascript/639518.html 在struts.xml里面添加: <result name="returnValue" type="json"> <param name="excludeProperties">.*hibernateLazyInitializer</param> </result> 解决了问题,但不知道为什么。 发现每次提问都是自问自答!快来个人让我把贴结了,把分给了

67,550

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧