在做 SAP Fiori 应用调试时,你一定遇到过这种场景:XML 里明明写的是一个很朴素的控件id,例如list,可在运行时(runtime)却变成了__xmlview0--list、__xmlview3--list这种看起来“凭空拼出来”的长 id。更头疼的是,当你在控制台、日志、埋点、自动化测试(OPA5 / wdi5)里拿到这个运行时 id,却不知道它到底在哪段代码里被生成、由谁拼接、为什么会带上__xmlviewX这段前缀。
这篇文章会用一个非常实战的方式,把整个链路拆开:运行时 id 的组成规律是什么、生成逻辑藏在哪个函数里、如何用断点和调用栈把“id 的出生地”揪出来。你会得到一套能在复杂项目(包括 Fiori Elements 模板生成的 UI)里也依然好用的定位方法。
现象复盘:XML 里的list,为什么会变成__xmlview0--list
假设你在 XMLView 里定义了一个主列表(Master List):
- 设计时(design time)你写的是:
id = list - 运行时你在控制台或调试器里看到的是:
__xmlview0--list
这个变化并不是随机的,而是 SAPUI5 的一套核心约定:View 内部使用“局部 id”,