这个问题网上回答很多了,但是我的问题一直没有得到解决。 完整的异常信息: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”的原因呢? |
|
依照:http://www.myexception.cn/javascript/639518.html
在struts.xml里面添加: <result name=”returnValue” type=”json”> <param name=”excludeProperties”>.*hibernateLazyInitializer</param> </result> 解决了问题,但不知道为什么。 发现每次提问都是自问自答!快来个人让我把贴结了,把分给了 |
|
25分 |
我来拿分哈!
|