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

Orbeon表单提交成功后跳转移动应用链接失败如何解决?

问题分析

你的核心问题在于Orbeon的服务器端navigate动作无法正确处理自定义URI scheme(如my-app://),当跳转失败时,流程会触发recover summary分支,最终跳转到默认的表单实例管理页面。另外,原配置中xxf:evaluate(xxf:property('props.services-url'))属于冗余写法,xxf:property本身已返回字符串,无需额外解析。

解决方案

方案一:改用客户端JavaScript跳转(推荐)

将服务器端的navigate动作替换为客户端JS跳转,直接在浏览器环境中处理自定义URI:

修改表单关闭流程配置:

<property as="xs:string" name="oxf.fr.detail.process.close.*.*"> 
     relinquish-lease                                                         
     then run-client-action(action = "javascript: window.location.href = '{xxf:property('props.services-url')}';") 
     recover summary
</property>

保留props.services-url的原有配置即可:

<property as="xs:string" name="props.services-url">
     if (xxf:get-request-parameter('Portal') = 'Web') then 'https://some-website.com'
     else if (xxf:get-request-parameter('Portal') = 'Mobile') then 'my-app://'
     else ''
</property>

方案二:验证参数传递是否正确

确保打开表单时,请求参数Portal=Mobile已正确传递给Orbeon:

  • 检查浏览器地址栏是否包含?Portal=Mobile参数
  • 可临时在表单中添加只读控件,绑定表达式xxf:get-request-parameter('Portal'),直观查看参数值

若参数未正确传递,props.services-url会返回空字符串,导致跳转失败触发recover summary。

方案三:临时硬编码URI测试

为排除参数逻辑干扰,可直接将URI硬编码到流程中测试:

<property as="xs:string" name="oxf.fr.detail.process.close.*.*"> 
     relinquish-lease                                                         
     then run-client-action(action = "javascript: window.location.href = 'my-app://';") 
     recover summary
</property>

如果此配置能成功跳转,说明问题出在参数传递或原服务器端navigate动作的兼容性上。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 13:24:54