Browse Source

REPORT-131064 设计器导出模板失败,报错模板解析错误

【问题原因】1、导出时,模版路径默认传的参数为以“reportlets”开始的,读取模板时会再次拼接“reportlets”,导致找不到模板文件。 2、当前的导出结果默认是返回字节数组,设计器启动的情况下,未将字节数组写入到流中。
 【改动思路】1、判断存在“reportlets”时,删除。 2、将字节数组写入到流中
fbp/release
Leo.Qin 3 months ago
parent
commit
c4e7452a37
  1. 20
      designer-base/src/main/java/com/fr/design/actions/file/export/AbstractExportAction.java

20
designer-base/src/main/java/com/fr/design/actions/file/export/AbstractExportAction.java

@ -15,8 +15,8 @@ import com.fr.file.filter.ChooseFileFilter;
import com.fr.io.exporter.DesignExportType;
import com.fr.io.exporter.ExporterKey;
import com.fr.log.FineLoggerFactory;
import com.fanruan.product.ProductConstants;
import com.fr.stable.StringUtils;
import com.fr.stable.project.ProjectConstants;
import com.fr.third.jodd.io.FileNameUtil;
import com.fr.workspace.WorkContext;
import com.fr.workspace.server.exporter.TemplateExportOperator;
@ -211,19 +211,15 @@ public abstract class AbstractExportAction<E extends JTemplate<?, ?>> extends JT
}
private void dealExporter(OutputStream outputStream, String path, final Map<String, Object> para) throws Exception {
if (path.startsWith(ProjectConstants.REPORTLETS_NAME)) {
path = path.substring(ProjectConstants.REPORTLETS_NAME.length());
}
// 没有办法处理这个 isLocal 判断,因为一个是修改参数传递结果,一个是返回值做结果
// todo 后续想想办法
if (WorkContext.getCurrent().isLocal()) {
WorkContext.getCurrent().get(TemplateExportOperator.class)
.export(exportKey(), exportType(), outputStream, path, para);
} else {
byte[] contents =
WorkContext.getCurrent().get(TemplateExportOperator.class)
.export(exportKey(), exportType(), null, path, para);
byte[] contents =
WorkContext.getCurrent().get(TemplateExportOperator.class)
.export(exportKey(), exportType(), null, path, para);
outputStream.write(contents);
}
outputStream.write(contents);
}
@Override

Loading…
Cancel
Save