升级mpr-v8及Vaadin Flow后UI.getCurrent().addWindow失效问题问询
问题根因
MPR-V8 5.0.4版本适配Vaadin Flow 21.0.1的过程中,对legacy V8窗口的挂载逻辑做了破坏性调整,原有的通过Flow侧com.vaadin.flow.component.UI.addWindow()添加V8 com.vaadin.ui.Window实例的能力被移除,该调整是为了解决双版本窗口组件共存时的层级渲染冲突、事件响应异常问题。
修复方案
调整代码为通过V8侧的UI实例挂载legacy窗口,具体实现如下:
- 优先使用V8的
com.vaadin.ui.UI获取当前上下文实例,不要混用Flow侧的UI类 - 直接调用V8 UI的
addWindow方法添加窗口,参考代码:
// 导入V8的UI类,而非Flow侧的UI类 import com.vaadin.ui.UI; import com.vaadin.ui.Window; // 业务逻辑中调用 Window window = /* 你的legacy窗口实例 */; UI v8CurrentUi = UI.getCurrent(); v8CurrentUi.addWindow(window);
- 如果在Flow侧的事件回调中获取V8 UI实例为null,可以通过对应
LegacyWrapper实例的getUI()方法获取绑定的V8 UI对象。
内容的提问来源于stack exchange,提问作者Michael
相关产品推荐
相关产品推荐

