Cross App Navigation重复跳转异常:首次正常后续自动返回根视图
问题分析与解决方案
你的问题核心是错误地将路由路径拼接进了action字段,导致Cross App Navigator重复跳转时解析异常。
问题根源
在你的代码中,action字段被设置为Display&/Details/${sProductCode},但action字段仅用于指定语义对象的动作名称(这里应该是Display),后续的&/Details/xxx属于目标应用的路由路径,不应该和action混在一起。首次跳转时Shell的解析逻辑可能临时兼容了错误格式,但重复跳转时,Navigator会严格解析action字段,截断&后的内容,最终只跳转到语义对象的根视图#Object-Display。
修正方案
方案1:拆分语义动作与路由参数(推荐)
将action设为纯动作名称,通过parameters传递路由路径(需目标应用支持该参数传递方式):
const sHash = oCrossAppNavigator.hrefForExternal({ target: { semanticObject: "Object", action: "Display", parameters: { route: `/Details/${sProductCode}` } } }) || ""; oCrossAppNavigator.toExternal({ target: { shellHash: sHash } });
方案2:直接构造完整Shell Hash
如果明确目标地址格式,可直接拼接完整的shellHash字符串,绕过hrefForExternal的解析逻辑:
const sShellHash = `#Object-Display&/Details/${sProductCode}`; oCrossAppNavigator.toExternal({ target: { shellHash: sShellHash } });
额外说明
如果目标应用是SAP UI5应用,需确保其路由配置中存在/Details/{productCode}的路由规则,并且语义对象Object的Display动作已正确绑定到该路由,或者允许通过参数传递路由路径。
内容的提问来源于stack exchange,提问作者user19956344
相关产品推荐
相关产品推荐

