1

背景

我正在研究使用 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也是。

4

1 回答 1

1

好吧,我想我的标题和信息有点误导,所以我不妨用下面的“答案”来结束我自己的问题。

为了嵌入 MVC3 应用程序(读取为我想象的任何非 Java 后端)Orbeon Forms Runner 并让它工作,我必须执行以下操作:

  1. 为我在 Tomcat 7 ( Dzhuvinov.com )上安装 Orbeon Forms 配置 CORS 过滤器以允许跨域 AJAX。
  2. 在从 Orbeon 返回的 HTML 部分中,使相对 URL 开始 /orbeon/xforms-server/ 对自定义代理的绝对调用。将 JSESSIONID 存储在 ASP.NET MVC 会话对象中。
  3. 为代理编写控制器操作以处理请求。在使用存储在 (2) 中的值设置 JSESSIONID cookie 后,这个简单的代理将请求转发到 Orbeon Forms 安装。
于 2012-05-23T07:32:01.953 回答