背景
我正在研究使用 Orbeon Forms 来集成到我们的 ASP.NET MVC3 Web 应用程序中,方法是构建一个简单的 MVC3 应用程序来解决问题。
我有一个在我们的 HyperV 服务器上运行 Tomcat 7 和 Orbeon 3.9.1 PE 试用版的 Win2008 R2 标准服务器。这是可行的,我可以创建表单,然后使用表单提交数据。
我在本地开发机器上创建了一个空的 MVC3 应用程序。它在 Home 控制器上有一个 Index 操作,该操作返回一个页面,该页面有一堆链接,这些链接指向我在 Orbeon 安装上的一些表单的添加新 URL。链接访问 Home 控制器上的 Add 操作,该控制器使用 WebRequest 对象和末尾标记的 ?orebeon-embeddable=true 查询字符串参数来获取 Orbeon 提交表单页面的定义。我将返回的相对 URL 替换为绝对 URL。然后我将其插入基本视图并显示它。
问题
然而!无论如何,只要我确实与 Orbeon 表单交互,例如在单行文本框字段 (IE9) 内单击,我就会在脚本文件“orbeon-[random guid style value].js”第 121 行中收到 JS 错误。 “AjaxServer.exceptionWhenTalkingToServer(e,formID)”突出显示,错误为“formID 未定义”。
我不知道从哪里开始看这里,因为我不熟悉 Tomcat,只知道我可以从 Orbeon 文档中破译什么。
有人尝试像这样嵌入表单运行器并遇到此错误吗?
我接下来尝试了什么
[更新]:MVC Json() 方法让我想到,也许我在 VM 上设置的 Orbeon 测试站点不喜欢它从我的开发机器上的 MVC 应用程序获取 AJAX 请求的事实。考虑到这一点,我尝试将 CORS 过滤器从dzhuvinov.com安装到 Orbeon 应用程序中 。根据将相关配置添加到 web.xml 文件后的文档,默认行为是非常不受限制的,即它应该让一切都通过。不幸的是,在重新评估 Tomcat 之后,这并没有帮助。
[更新 2]:好吧,似乎 CORS 文档有点过时了,默认值似乎相反,因此设置初始值似乎可以解决这个问题 - 尽管 IE9 仍然收到 JS 错误消息。与此同时,在 FireFox 12 中,情况正在好转,但现在的问题是如何传递 JSESSIONID cookie Orbeon 在我将运行器嵌入 MVC 视图时将我发回,这样当您触发 Orbeon 表单上的任何 AJAX 时,它会发送 JSESSIONID cookie也是。