Orbeon Forms:如何在Form Runner模式下读取浏览器URL?
在Form Runner模式下读取浏览器URL的解决方案
方法1:通过XForms服务器端函数获取请求相关URL
如果仅需获取服务器端处理的请求URL(不含客户端哈希参数),可以使用以下XPath函数:
- 获取当前请求的URI:
xxf:get-request-header('Orbeon-Request-URI')
- 获取来源页面URL:
xxf:get-request-header('Referer')
方法2:JavaScript获取完整客户端URL并同步到XForms
若需要包含哈希、客户端参数的完整浏览器URL,需结合JavaScript实现:
- 在表单中添加自定义脚本,获取URL并写入XForms实例:
// 获取当前浏览器完整URL const fullUrl = window.location.href; // 将值同步到XForms实例节点(需提前定义对应节点) ORBEON.xforms.Document.setValue('current-url-node', fullUrl);
- 在XForms模型中定义存储URL的实例:
<xf:instance id="url-instance"> <data> <current-url/> </data> </xf:instance>
- 在XForms中引用该URL:
instance('url-instance')/current-url
方法3:使用Form Runner专属函数拼接当前URL
利用Form Runner提供的fr:url()函数,可拼接出当前表单的完整访问URL:
fr:url('') || substring-after(xxf:get-request-header('Orbeon-Request-URI'), fr:url(''))
注:若之前尝试的XXF函数无效,大概率是因为这类函数仅能获取服务器端请求信息,无法读取客户端生成的哈希或动态参数,此时优先选择方法2。
内容的提问来源于stack exchange,提问作者Pete Atkin
相关产品推荐
相关产品推荐

