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

Vaadin 23.3.12中浏览器后退/前进时NavigationTrigger类型获取异常

问题分析与解决

在Vaadin 23.3.12中,你通过event.getLocationChangeEvent().getTrigger()获取导航触发源时得到CLIENT_SIDE而非预期的HISTORY,核心原因是**AfterNavigationEvent的getTrigger()方法和其内部LocationChangeEvent的getTrigger()指向的并非同一触发源标识**。

浏览器的前进/后退操作属于历史导航,Vaadin会将这类导航的触发源标记为NavigationTrigger.HISTORY,但该标识直接绑定在AfterNavigationEvent本身,而非嵌套的LocationChangeEvent中。后者的CLIENT_SIDE标识实际指代的是客户端发起的路由变更动作,并非具体的历史导航触发类型。

你需要修改代码,直接从AfterNavigationEvent获取触发源:

@Override
public void afterNavigation(AfterNavigationEvent event) {
    final var trigger = event.getTrigger(); 
    // 此时点击浏览器后退/前进,trigger应为NavigationTrigger.HISTORY
    ...
}

另外需要注意,在Vaadin 23.x的部分场景中,如果你的路由配置包含嵌套视图或自定义客户端路由逻辑,可能会干扰触发源的判断,但直接使用event.getTrigger()是官方推荐的获取历史导航触发标识的方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 20:02:34