- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个带有 Spring Boot 的 vaadin flow (13) 应用程序。我有一个 VerticalLayout,注释为 @UIScope
具有多个子布局。子布局用 @Scope("prototype")
注释。并通过 ctx.getBean(SubUI.class, ...)
创建。根据父 UI (VerticalLayout) 上的选择和按钮单击,添加或删除子布局。
只要我单独使用该应用程序,一切都可以正常工作(这就是为什么我在将应用程序交付给客户进行验收测试后立即发现错误的原因)。他们对多个用户进行了测试。只要一个用户使用该应用程序,一切都会正常,但一旦第二个用户进入 UI(VerticalLayout),就会引发以下异常:
java.util.concurrent.ExecutionException: java.lang.IllegalStateException: Cannot access state in VaadinSession or UI without locking the session.
at java.util.concurrent.FutureTask.report(FutureTask.java:122) ~[na:1.8.0_202]
at java.util.concurrent.FutureTask.get(FutureTask.java:192) ~[na:1.8.0_202]
...
我为我的父布局尝试了不同的注释(@UIScope、@Scope("prototype")、@VaadinSessionScope),但没有解决我的错误。
我用谷歌搜索了这个问题并找到了一些线程,但它们都没有帮助我解决我的问题。我不太确定问题是由我的 UI/布局的范围引起的还是由数据绑定(bind)引起的。在我的子布局中,数据使用 Binder<MyEntity> binder = new Binder<>(MyEntity.class);
绑定(bind)。和binder.forField(xxx).bind(MyEntity::getXY,MyEntity::setXY);
.
有人可以解释一下我的问题是什么吗?我会非常高兴,因为我需要为我的客户测试提供一个固定版本。
亲切的问候
最佳答案
您的应用程序中有一些逻辑尝试从后台线程修改UI状态、组件等。这应该通过锁定来完成。因此,您需要将从后台方法调用的逻辑封装在 View 中
getUI().ifPresent(ui -> ui.access(() -> {
...
}));
此外,还应启用服务器推送
。
关于java - Vaadin Spring 启动 : "Cannot access state in VaadinSession or UI without locking the session" when multiple users access UI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60179159/
我将 Vaadin Flow 13 与 Spring Boot 结合使用。在我的“application.properties”中,我指定了以下值: vaadin.servlet.heartbeatI
我们在嵌入式 Tomcat 中运行 Vaadin(版本 8.5.1,vaadin-spring 版本 3.1)和 Spring(版本 5.1.1)。当我关闭 Tomcat 服务器时,我遇到了带有以下堆
我试过: @WebServlet(urlPatterns = "/TestServlet") public class TestServlet extends HttpServlet { @Ove
我注意到对于 Vaadin Fusion 端点,似乎没有可用的 VaadinSession。这是设计使然吗?我做错了什么吗? 最佳答案 使用 Fusion 时不应依赖 VaadinSession。由于
我目前正在使用 Vaadin 7 创建 RIA,并且正在设计登录功能。 应用程序设计很简单: UI 类 在不同的View 类 之间执行导航。特别是,第一个显示的 View 是 LoginView 类,
我有一个基于某些 github 项目的带有 vaadin session 的工作 spring 安全项目。一切正常,直到我创建一个新的配置静态类,我想在其中指定需要 SSL 的路径。 这是我的项目和应
我知道在调用 setAttribute ( link ) 时是必须的,但是 getAttirbute 呢? 这是正确的吗? public Object getMyAttribute() { r
我有一个带有 Spring Boot 的 vaadin flow (13) 应用程序。我有一个 VerticalLayout,注释为 @UIScope具有多个子布局。子布局用 @Scope("prot
我是一名优秀的程序员,十分优秀!