vaadin - 在 Vaadin14 中打开外部 BIRT 链接时出现问题
问题描述
我正在尝试从下面的屏幕中获取输入并将 Birt Report 直接打开为 PDF。(我正在使用 Vaadin 14)
问题: 每次加载此 UI 时,我的锚点/按钮都不会在第一次单击时打开任何链接。但是从第二次单击开始单击一次后,它工作正常。任何想法可能是什么问题以及我犯了什么错误?
以下是我的全局变量:
final Button printButton =
new Button("Print Report", VaadinIcon.PRINT.create());
String url = null;
final Anchor anchorReport = new Anchor();
我的构造函数:
public AssignmentCompletedAllRPTView()
{
super();
this.initUI();
this.radioButtonGroup.setItems("Yes", "No");
this.printButton.addClickListener(new ComponentEventListener<ClickEvent<Button>>()
{
@Override
public void onComponentEvent(final ClickEvent<Button> event)
{
AssignmentCompletedAllRPTView.this.printButton();
}
});
this.ConfigureReportButton();
}
配置报告按钮():
private void ConfigureReportButton()
{
this.anchorReport.setTarget("_blank");
this.anchorReport.add(this.printButton);
this.buttonHorizontalLayout.add(this.anchorReport);
}
打印按钮():
private void printButton()
{
final String reportURL = //--URL
this.anchorReport.setHref(reportURL);
}
解决方案
这里有两个组件: aButton
和 an Anchor
。你Button
被放置在Anchor
in 中ConfigureReportButton
。您Button
还在构造函数中获得了一个点击监听器。
当您第一次单击锚点内的按钮时,锚点没有href
,因此它什么也不做。它还执行printButton
更新href
锚点的方法。当您下次单击锚点内的按钮时,锚点有一个href
集合,因此它会加载文件。它还再次执行按钮的单击侦听器,因此href
得到更新。
要解决此问题,printButton()
请在构造函数的末尾执行。
推荐阅读
- java - 如何从 IntelliJ 终端按 ESC 退出 JFrame?
- javascript - 是否可以从数组中删除重复的对象,在 Javascript 中使用过滤器方法
- php - PHP数组在foreach中找到相同的值
- angular - 不能在 Angular 路由中使用枚举
- php - 从webview下载pdf,pdf以blob格式存储在mysql DB中
- javascript - 如何在反应可排序树中复制树节点(带子节点)并粘贴到树中的其他位置?
- sql - SQL - 计算课程部分的数量
- swift - 磁盘工具列表中使用了哪些 UI 元素
- javascript - 判断用户的浏览器是否支持 USDZ 或 Reality Composer 文件格式
- python - 如何修复 Python Whle Scraping 中的 If 语句