使用Vaadin Fusion端点时无VaadinSession可用是设计问题还是操作错误?
Vaadin Fusion端点无VaadinSession问题解答
这是框架的默认设计,不属于操作错误。
核心原因
Vaadin Fusion(现更名Hilla)的端点本质是无状态的HTTP API接口,设计上默认不与Vaadin服务端UI的会话逻辑绑定,只有请求路径对应Vaadin服务端UI路由、触发服务端组件渲染逻辑时,框架才会自动初始化并传递VaadinSession上下文,普通端点请求不会触发这个逻辑。
如果你确实需要在端点中使用VaadinSession,可按以下步骤操作:
- 先确保用户侧已经访问过至少一个Vaadin服务端UI页面,完成VaadinSession的初始化生成
- 给需要使用VaadinSession的端点方法添加
@Authenticated注解,让框架自动传递会话上下文 - 异步调用场景下需要提前将VaadinSession上下文传递到异步线程,避免跨线程拿不到会话
注意事项
如果你的应用仅使用Fusion的前端能力,没有任何Vaadin服务端UI页面,运行全程都不会生成VaadinSession,这种场景下不要依赖VaadinSession存储数据,改用HttpSession或独立缓存方案更合理。
内容的提问来源于stack exchange,提问作者Bernd Hopp
相关产品推荐
相关产品推荐

