如何检测Vaadin Grid空白区域的点击事件
检测Vaadin Grid空白区域点击的实现方案
核心思路
通过点击事件的DOM目标元素向上遍历,判断是否属于Grid行元素——如果找不到行元素,就判定为点击了空白区域,再执行对应逻辑。
具体实现步骤
- 给Grid添加点击监听器,在处理逻辑里拿到原生DOM事件的目标元素
- 向上遍历该元素的父节点,检查是否带有Grid行的标识CSS类(比如
vaadin-grid-row,不同Vaadin版本可能有差异,可通过浏览器开发者工具查看实际类名) - 确认是空白区域点击后,执行当前编辑行的校验、保存操作,再退出编辑模式
代码示例
grid.addClickListener(event -> { // 获取原生DOM事件的目标元素 Element target = event.getSource().getElement().getPropertyElement("event.target"); boolean clickedOnRow = false; // 向上遍历DOM树,查找Grid行元素 Element currentElement = target; while (currentElement != null) { if (currentElement.getClassList().contains("vaadin-grid-row")) { clickedOnRow = true; break; } currentElement = currentElement.getParent(); } if (!clickedOnRow) { // 校验并保存当前编辑行 validateAndSaveCurrentEditedRow(); // 退出编辑模式 grid.cancelEditor(); } });
注意事项
- 适配Vaadin版本:不同版本的Grid行CSS类可能不同,比如部分旧版本可能用
v-grid-row,务必通过浏览器开发者工具确认实际类名 - 校验逻辑要严谨:
validateAndSaveCurrentEditedRow()方法里要先完成编辑内容的合法性校验,校验通过再保存,失败则保留编辑状态并提示错误
内容的提问来源于stack exchange,提问作者Hons
相关产品推荐
相关产品推荐

