You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从Vaadin7.7.6升级到Vaadin8.20.0:MenuItem数据方法替代方案咨询

Vaadin8 MenuBar.MenuItem 替代 ContextMenuItem 数据存取方案

Vaadin8 移除了 ContextMenuItem 改用 MenuBar.MenuItem 后,虽然没有直接提供 setData()/getData() 方法,但可以通过以下两种方式实现相同的数据存取功能:

方法一:使用通用的 setUserData()/getUserData()

Vaadin 组件体系中大部分组件都支持这对方法,用来存储自定义业务数据,用法和原 setData()/getData() 完全一致:

// 存储自定义数据
MenuBar.MenuItem menuItem = menuBar.addItem("示例菜单项", null);
menuItem.setUserData(yourCustomData); // yourCustomData 可以是任意对象

// 获取存储的数据
YourCustomDataType data = (YourCustomDataType) menuItem.getUserData();

方法二:用 Map 存储多键值对数据

如果需要给单个菜单项关联多个数据,可以将数据封装进 Map 后再存入:

// 封装多组数据
Map<String, Object> dataMap = new HashMap<>();
dataMap.put("id", 123);
dataMap.put("name", "测试项");
menuItem.setUserData(dataMap);

// 读取指定数据
Map<String, Object> retrievedMap = (Map<String, Object>) menuItem.getUserData();
Integer itemId = (Integer) retrievedMap.get("id");
String itemName = (String) retrievedMap.get("name");

这两种方式完全可以替代原 ContextMenuItem 的数据存取逻辑,无需额外扩展组件。

内容的提问来源于stack exchange,提问作者NewBee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 07:28:12