问题标签 [vaadin14]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
157 浏览

java - 如果用户尚未通过身份验证,如何处理对视图的访问?

我的 Vaadin 14 的主页是带有根 Route 的 MainView。

MainView被用作另一个视图(带有layout = MainView.class)的“模板”,所以我认为它更像是一个“抽象”视图,不应自行初始化,仅用于其他视图作为布局。

MainView现在的问题是:如果用户BeforeEnterEvent在构造函数之后访问。这可能会导致抛出异常,因为用户尚未经过身份验证,并且构造函数已经执行了诸如构建选项卡之类的操作。

有没有办法阻止用户访问 MainView 的路由或在调用构造函数之前执行的事件?仅当用户通过身份验证时才允许访问视图。

更新:

该修复程序作为Vaadin 14.2中的实验性功能发布。

0 投票
2 回答
1335 浏览

java - {Java} Vaadin 14 - 检测用户离开(关闭选项卡、f5 等)

我目前正在使用Vaadin Flow 版本 14 ( https://github.com/vaadin/platform/releases/tag/14.0.0 )
我运行 Java 版本 1.8.0_231,64 位。

我只是希望能够在用户执行以下任一操作时检测到(在 java 中!):

  • 关闭当前浏览器选项卡(或其浏览器)
  • 在他们的键盘上点击 F5,或者在他们的浏览器中按下刷新按钮
  • 单击链接(或其他任何内容),将它们从我的网站重定向

我已经尝试了很多不同的方法来检测这一点。到目前为止,我唯一能检测到的是当前 VaadinSession 到期时(我可以通过做来更改VaadinSession.getCurrent().getSession().setMaxInactiveInterval(15))。这使得每个会话在 15 秒后过期(在我的例子中,15 只是一个测试数字)。



使用Vaadin 8,我相信您可以做到这一点,并且开箱即用:

我不能使用这个,因为我使用的是Vaadin 14,而不是8


我尝试将其添加到我的 View 类中:

它仅在会话到期时打印此消息(在我的情况下为 15 秒)。即使我不关闭页面。


我已经尝试实现BeforeLeaveObserver / BeforeLeaveListener并覆盖它:

这从不打印。


我也尝试了所有这些,但他们没有做我需要的:

1 addUIInitListener当用户加载页面时打印。
1.1 addBeforeLeaveListener从不打印。
2 addServiceDestroyListener从不打印。服务与会话不同。有道理。
1.23 addSessionDestroyListener在一段时间后打印。需要15-30秒。


有没有办法基本上立即检测到这一点?:/

0 投票
0 回答
166 浏览

java - 使用插件导出 Vaadin 14 应用程序会引发 BeanInstantationException

我正在尝试导出使用插件(自动完成插件)的 Vaadin 14 应用程序,导出的应用程序似乎错过了插件,但我无法理解导出时我做错了什么。从 Eclipse 内部启动它非常有效。

首先我试图用'mvn clean package -Pproduction'导出应用程序,但即使应用程序在java控制台中似乎没有错误,我也在浏览器控制台中获取它们(TypeError:i.register不是一个函数)。该应用程序似乎已加载,但似乎缺少插件和某些样式。

从 IDE 内部

在 IDE 中启动时看到的应用程序

从 IDE 外部 从 IDE 外部启动时的应用程序

然后我尝试以我在 pom 上找到的目标(干净的包 -Dvaadin.productionMode)启动它,但出现了另一个错误,这次是在控制台上

org.springframework.beans.factory.BeanCreationException:创建名为“org.test.MainView”的bean时出错:bean实例化失败;嵌套异常是 org.springframework.beans.BeanInstantiationException:无法实例化 [org.test.MainView]:构造函数抛出异常;嵌套异常是 java.lang.IllegalStateException:在使用“@JsModule”注释声明的任何模板文件中找不到带有标签“vcf-autocomplete”的元素的定义。检查 WAR 文件中模板文件的可用性或提供方法 getTemplateContent() 的替代实现,该方法应返回表示模板文件内容的元素

虽然解释似乎很详细,但我不确定如何继续,因为我只是使用插件,错误文本似乎暗示插件缺少某些东西。

如果我使用clean package -Pproduction -Dvaadin.productionMode生成应用程序,我会得到与第一个相同的行为(控制台TypeError 中的错误:i.register is not a function

将插件导出/编译到应用程序中我缺少什么?

0 投票
2 回答
686 浏览

java - Vaadin-14:检查客户端是否是移动设备

我正在开发一个 web 应用程序,我想将桌面和移动设备的 UI 分开,所以我想检查使用我的应用程序的客户端是否是移动设备。

我试图在网上查找官方文档或 vaadin 论坛,但我找不到任何有用的信息,因为这些答案中提出的几乎所有解决方案都不再可实施(这些方法已被删除)。

0 投票
2 回答
118 浏览

java - 如何在 Vaadin 的另一个类中使用路由器布局类的变量/方法?

我正在使用Vaadin 14.0.3。我有一个MainLayout方法类someCode。我正在使用这个类作为另一个名为MainView. someCode是否可以在中使用该方法MainView?这是示例:

谢谢!

0 投票
1 回答
726 浏览

performance - Vaadin 14.1.17 启动很慢

我正在测试从“开始”页面(此处)生成的空 Vaadin 项目

我面临着非常缓慢的启动时间(最多 6 分钟)而且我并不真正了解发生了什么,我尝试设置 vaadin.servlet.productionMode=true 但它并没有解决问题。

有没有办法生成更详细的启动日志?您可以在下面找到当前日志。

谢谢大卫

0 投票
1 回答
90 浏览

fullcalendar - Vaadin14 fullcalendar applyChangesOnEntry 返回错误的资源

我在使用 fullcalendar 时遇到了一些问题,我不知道如何解决这个问题。我的代码以前在带有 fullcalendar 1.9.2 的 vaadin 13 上工作。

我的代码:

});

pom.xml

这就是代码与 Vaadin 13 一起使用的方式:

  1. 从“资源 1”拖动事件
  2. 将事件放在“资源 2”上
  3. 显示带有三个选项(复制、移动、中止)的弹出窗口(用户选择一个)
  4. 将拖动的(资源 1)事件复制或移动到选定的(资源 2)资源(行)

这就是代码现在与 Vaadin 14 一起工作的方式:

  1. 从“资源 1”拖动事件
  2. 将事件放在“资源 2”上
  3. 显示带有三个选项(复制、移动、中止)的弹出窗口(用户选择一个)
  4. 将拖动的(资源 1)事件复制或移动到同一资源,因此它在同一资源(行)上复制事件

这里的问题是 applyChangesOnEntry 没有应用正确的资源。如何获得正确的资源?

0 投票
1 回答
817 浏览

vaadin - Vaadin 14 中的列标题中的文本是否可以换行到网格中的多行?

在此处输入图像描述

在上图中,我Grid在 Vaadin 14 中创建了一个。请注意列标题​​未换行的红线。

我试图弄清楚是否有可能(并且安全/容易/标准)让列标签换行(例如,就像在 Excel 中那样)。

我和我的同事都不知道该怎么做。

0 投票
1 回答
209 浏览

java - {Java} Vaadin 14 - 将用户限制为 1(一)个活动 UI

我发布了这个问题java-vaadin-14-detect-user-leave-closes-tab-f5-etc但我想我问了错误的问题。
我想将每个登录用户限制为只有一 (1) 个活动浏览器选项卡或 UI。

有人告诉我使用,但每次用户刷新页面时VaadinSession.getCurrent().getUIs(),此列表都会增加 1(如果启用,则增加 2 )。@Push这意味着我无法检查此列表是否包含多个(或 2 个)。

我迷路了!使用本机 Java 应用程序和内置登录系统,我可以轻松地将每个用户限制为一 (1) 个会话。使用浏览器更难。或者也许不是?

0 投票
1 回答
214 浏览

java - Vaadin 14.1.17 - 获取图表中选择的元素 - Java

您好,我想知道如何从 Vaadin 14.1.17 的饼图中检索单击的元素。

我正在使用带有 DataSeries 和内部一些值的经典饼图,我想从点击侦听器中获取当前选定的项目

数据系列初始化

我试过阅读selected里面的字段,DataSeriesItem但它总是false

单击侦听器

输出

您对如何管理这个有任何想法吗?

谢谢大卫