我面临的有关 jasper 报告的问题是我的报告的详细带数据未显示在边缘浏览器中。在其他浏览器上,报告完美显示。 我已将 jar 和软件从 6.1 更新到 6.3,因为 6.1 不支持 Edge 浏览器,但问题仍然存在。我还将框架放在详细带字段后面(出于测试目的),但什么也没发生。 我想补充的一件事是,我选择了空白页面,以防没有数据类型和报告显示空白报告。从中可能推断出什么。 我想补充的一件事是,这个问题发生在 pdf 报告中
好的。问题背后的原因是向报告控制器发送了两个请求。因此,报告中未填充数据。我在控制器中添加了一个代码以避免双重请求。
String userAgent = request.getHeader("user-agent");
System.out.println(userAgent);
if(userAgent.contains("Edge")){
String dlnaHeader = request.getHeader("getcontentfeatures.dlna.org");
System.out.println(dlnaHeader);
if(dlnaHeader == null ){
System.out.println("Looks like a fake extra Edge request on PDF viewer. Ignore it.");
//return null;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] result = baos.toByteArray();
response.setContentType("application/pdf");
response.setHeader("Content-disposition","inline; ");
response.setContentLength(result.length);
ServletOutputStream sos = response.getOutputStream();
sos.write(result);
return null;
}
}
添加此代码后,我的报告在边缘浏览器中显示详细带中的数据。希望它也能帮助其他人。
这对我有帮助:
该问题是由内部 SWT 浏览器行为仍然依赖(默认情况下)IE11 引起的。正确设置 WebView2 组件以强制使用 Edge 引擎应该可以解决问题。
解决此问题的步骤:
从官方网站下载 Microsoft Edge WebView2 Runtime。最好的解决方案是选择“固定版本”x64。
使用 7-zip 等工具将下载的包解压到方便的目录
编辑 Jaspersoft Studio Professional.ini 文件,附加以下两个 Java 属性(替换为正确的 WebView 文件位置): -Dorg.eclipse.swt.browser.DefaultType=edge -Dorg.eclipse.swt.browser.EdgeDir=C:\dev\webview