Asynchronous 支持Vaadin 14浏览器多选项卡

Asynchronous 支持Vaadin 14浏览器多选项卡,asynchronous,browser,vaadin,vaadin14,Asynchronous,Browser,Vaadin,Vaadin14,Vaadin 14是否支持打开多个浏览器选项卡?当我在浏览器中打开新选项卡时,两个选项卡同步工作,所以当一个选项卡中的代码正在执行时,我在第二个选项卡中的操作将等待代码从第一个选项卡到最后一个选项卡。有没有办法让两个浏览器卡同时工作?我仍然希望每个浏览器只允许用户登录一次。每个浏览器选项卡都是不同的UI,但它们共享相同的会话。Vaadin 14没有限制打开多个UI,但如果您的登录逻辑与UI绑定,则可能会出现这种情况。每个浏览器选项卡都是不同的UI,但它们共享相同的会话。Vaadin 14没有限制

Vaadin 14是否支持打开多个浏览器选项卡?当我在浏览器中打开新选项卡时,两个选项卡同步工作,所以当一个选项卡中的代码正在执行时,我在第二个选项卡中的操作将等待代码从第一个选项卡到最后一个选项卡。有没有办法让两个浏览器卡同时工作?我仍然希望每个浏览器只允许用户登录一次。

每个浏览器选项卡都是不同的UI,但它们共享相同的会话。Vaadin 14没有限制打开多个UI,但如果您的登录逻辑与UI绑定,则可能会出现这种情况。

每个浏览器选项卡都是不同的UI,但它们共享相同的会话。Vaadin 14没有限制打开多个UI,但如果您的登录逻辑与UI绑定,则可能会出现这种情况。

Vaadin在处理任何可能更改服务器端状态的请求时,会获取整个会话的锁。如果有多个UI属于同一会话,则它们共享该锁。这是一个基本的架构设计选择,如果没有大量的内部返工,就无法避免


处理这一问题的建议方法是,在持有锁的同时避免执行缓慢的操作。这通常意味着您将实际工作提交给后台线程,然后结合使用
UI::access
@Push
UI::setpollineval
对UI进行更新,并在后台工作完成后在浏览器中提供这些更改。

Vaadin获得整个会话的锁处理任何可能更改服务器端状态的请求时。如果有多个UI属于同一会话,则它们共享该锁。这是一个基本的架构设计选择,如果没有大量的内部返工,就无法避免


处理这一问题的建议方法是,在持有锁的同时避免执行缓慢的操作。这通常意味着您将实际工作提交给后台线程,然后结合使用
UI::access
@Push
UI::setpollineval
对UI进行更新,并在后台工作完成后在浏览器中使用这些更改。

我可以打开多个选项卡,但它们都在工作合角的。在每个选项卡中,我可以看到不同的视图Vaadin不提供用于同步视图的内置解决方案,但它也不会阻止您自己进行同步。我可以打开多个选项卡,但它们是同步工作的。在每个选项卡中,我可以看到不同的视图Saadin没有提供用于同步视图的内置解决方案,但它也不会阻止您自己进行同步在开始创建时,在一个选项卡中创建我的面板,但之后我需要编写
UI.getCurrent().getSession().lock()
UI.getCurrent().access
来更改UI。创建新面板时,会话被锁定是否正常?在更改用户界面时,是否有任何选项可以自动锁定和解锁?如果您手动执行
unlock()
,则会给自己带来远比想象中更多的麻烦。损坏该UI实例的状态所需的只是用户在UI中执行任何其他操作(例如,在浏览器中导航回)。再次执行
lock()
后,您将覆盖中间用户操作过程中未定义的部分。Vaadin承诺在调用与特定会话相关的应用程序代码时始终代表您持有会话锁。这包括所有常规事件处理程序以及与导航相关的任何内容。因此,当实例化
@Route
类时,会话被锁定是完全正常的。如果没有来自Vaadin的同步,所有应用程序代码都必须在接触任何与UI状态相关的内容之前显式地处理同步。这将是不切实际的,容易出错,对初学者非常不友好。只需使用后台线程来执行慢备份工作即可。thx对于您的帮助,现在我知道如何执行此操作,当我将长时间加载的数据移动到线程时,我可以在其他选项卡中同时执行我想要的操作。但还有另一个问题,是否可以在网格中心添加一些加载微调器来告诉用户数据仍在加载?我不知道有什么方法可以在网格内部显示微调器,但这并不意味着这是不可能的。如果你把它作为一个单独的问题发布,可能会更容易找到答案在开始创建时,在一个选项卡中创建我的面板,但之后我需要编写
UI.getCurrent().getSession().lock()
UI.getCurrent().access
来更改UI。创建新面板时,会话被锁定是否正常?在更改用户界面时,是否有任何选项可以自动锁定和解锁?如果您手动执行
unlock()
,则会给自己带来远比想象中更多的麻烦。损坏该UI实例的状态所需的只是用户在UI中执行任何其他操作(例如,在浏览器中导航回)。再次执行
lock()
后,您将覆盖中间用户操作过程中未定义的部分。Vaadin承诺在调用与特定会话相关的应用程序代码时始终代表您持有会话锁。这包括所有常规事件处理程序以及与导航相关的任何内容。因此,当实例化
@Route
类时,会话被锁定是完全正常的。如果没有来自Vaadin的同步,所有应用程序代码都必须在接触任何与UI状态相关的内容之前显式地处理同步。这将是不切实际的,容易出错,对初学者非常不友好。只需使用一个后台线程就可以了。谢谢你的帮助,现在我知道怎么做了,当我移动我的lon时