private void processRelateReports() { if (this.lstRelateReports == null || this.lstRelateReports.size() == 0) return; this.mRelateReports = new HashMap<ReportBean, ReportBean>(); for (ReportBean rbeanSlave : lstRelateReports) { ReportBean rbeanMaster = this.getReportChild(rbeanSlave.getDependParentId(), true); if (rbeanMaster == null) { throw new WabacusConfigLoadingException( "加载页面" + this.getPath() + "失败,其下的报表" + rbeanSlave.getId() + "依赖的报表" + rbeanSlave.getDependParentId() + "不存在"); } if (rbeanMaster .isListReportType()) { // 如果主报表是列表报表,则子报表不能配置refreshid为其它容器,因为它们是在客户端单独加载的,不能和其它报表绑定加载 if (rbeanSlave.getRefreshid() != null && !rbeanSlave.getRefreshid().trim().equals("") && !rbeanSlave.getRefreshid().trim().equals(rbeanSlave.getId())) { throw new WabacusConfigLoadingException( "报表" + rbeanSlave.getPath() + "失败,它是依赖其它报表的从报表,因此不能为它配置refreshid属性"); } } processDependParams(rbeanSlave, rbeanMaster); if (rbeanMaster.isListReportType()) { AbsListReportBean alrbean = (AbsListReportBean) rbeanMaster.getExtendConfigDataForReportType(AbsListReportType.KEY); if (alrbean.getRowSelectType() == null || alrbean.getRowSelectType().trim().equals("") || alrbean.getRowSelectType().trim().equals(Consts.ROWSELECT_NONE)) { alrbean.setRowSelectType(Consts.ROWSELECT_SINGLE); } } this.mRelateReports.put(rbeanSlave, rbeanMaster); } validRelateReports(); ReportBean rbeanTempMaster; AbsListReportBean alrbean; List<ReportBean> lstCreatedListReportBeans = new ArrayList<ReportBean>(); for (Entry<ReportBean, ReportBean> rbeanEntries : this.mRelateReports.entrySet()) { rbeanTempMaster = rbeanEntries.getValue(); if (rbeanTempMaster.isListReportType()) { if (lstCreatedListReportBeans.contains(rbeanTempMaster)) continue; // 已经为此报表生成过js lstCreatedListReportBeans.add(rbeanTempMaster); alrbean = (AbsListReportBean) rbeanTempMaster.getExtendConfigDataForReportType(AbsListReportType.KEY); if (alrbean == null) { alrbean = new AbsListReportBean(rbeanTempMaster); rbeanTempMaster.setExtendConfigDataForReportType(AbsListReportType.KEY, alrbean); } alrbean.addRowSelectCallBackFunc( rbeanTempMaster.getRefreshSlaveReportsCallBackMethodName()); rbeanTempMaster.addOnloadMethod( new OnloadMethodBean( Consts_Private.ONLOAD_REFRESHSLAVE, rbeanTempMaster.getRefreshSlaveReportsCallBackMethodName())); } else { String masterReportRefreshId = rbeanTempMaster.getRefreshid(); if (masterReportRefreshId == null || masterReportRefreshId.trim().equals("")) { masterReportRefreshId = rbeanTempMaster.getId(); } rbeanTempMaster.setRefreshid( getParentContainerObjOfComponents(masterReportRefreshId, rbeanEntries.getKey().getId()) .getId()); } } for (ReportBean rbTmp : lstCreatedListReportBeans) { JavaScriptAssistant.getInstance().createRefreshSlaveReportsDataScript(rbTmp); } this.lstRelateReports = null; }