فهرست منبع

解析报表jrxml文件代码时增加容错处理

sunyj 9 سال پیش
والد
کامیت
1a92b5845d
1فایلهای تغییر یافته به همراه13 افزوده شده و 0 حذف شده
  1. 13 0
      src/main/java/com/uas/report/service/impl/PrintServiceImpl.java

+ 13 - 0
src/main/java/com/uas/report/service/impl/PrintServiceImpl.java

@@ -241,6 +241,19 @@ public class PrintServiceImpl implements PrintService {
 				if (line.contains("/jrxml/")) {
 					int beginIndex = line.indexOf("/jrxml/") + 7;
 					int endIndex = line.indexOf(".jasper");
+					// 子报表解析失败
+					if (beginIndex == -1 || endIndex == -1) {
+						bufferedReader.close();
+						String message = "嵌套报表源码解析失败:" + jrxmlFile.getName() + "\n子报表引用格式错误:";
+						try {
+							message += line.substring(line.indexOf("$P{REPORT_DIR}"),
+									line.indexOf("]]></subreportExpression>"));
+						} catch (Exception e) {
+							message = line.replaceAll("<subreportExpression><![CDATA[", "")
+									.replaceAll("]]></subreportExpression>", "").trim();
+						}
+						throw new ReportException(message);
+					}
 					String subJrxmlFileName = line.substring(beginIndex, endIndex) + ".jrxml";
 					subJrxmlFilePaths.add(jrxmlFile.getParent() + "/" + subJrxmlFileName);
 				}