开篇先把结论摆在读者面前:Web Dynpro ABAP 通过“轻量”组件实例来承载用户界面数据,每一次导航都会重新创建组件控制器;WebClient UI 则把数据托管给集中式 BOL/GenIL 引擎与全局事务上下文,天然具备跨视图、跨组件的持久会话能力。正因为二者在会话持久化策略上的分歧,开发者在缓存搜索结果、控制事务生命周期、调优性能时,必须采用完全不同的设计思路。本文以真实代码片段和项目案例为引线,带领读者深入理解这两种 SAP UI 技术的底层差异,并给出可落地的最佳实践。
Web Dynpro ABAP 的会话模型
组件控制器的生命周期
在 Web Dynpro 中,Component Controller
是组件级别的数据容器,也是所有视图共享的数据源。当用户从搜索页跳转到详情页再返回,组件控制器会被销毁并立刻重新实例化,导致其 WDDOINIT
钩子方法被再次执行,先前绑定在 Context Node
里的搜索结果也随之丢失。社区帖子里有大量关于“导航回来后 WDDOINIT
又跑了一遍”的困惑 (