2012-05-16 89 views
1

背景如何將Orbeon Forms嵌入到ASP.Net MVC3應用程序中?

我調查使用Orbeon形式通過構建一個簡單的應用程序MVC3推測的東西 出融入我們的 ASP.NET MVC3 Web應用程序。

我有一個運行Tomcat 7和Orbeon 3.9.1 PE 我們的HyperV服務器的Win2008 R2 std服務器試用版。這是行得通的,我可以創建表單,然後使用表單提交數據。

我在我的本地開發機器上創建了一個空的MVC3應用程序。它在主頁控制器上有一個 索引操作,該操作返回一個頁面,該頁面有一個 鏈接,用於在Orbeon 安裝中添加一些表單的新URL。這些鏈接訪問主控制器 上的添加操作,該操作使用WebRequest對象,並在末尾添加了標記爲?orebeon-embeddable = true的 查詢字符串參數,以獲取Orbeon提交表單頁面的 的定義。我將中的相對URL替換爲絕對路徑。然後我將它插入到基本視圖中,然後顯示它。

問題

無論其!只要我確實與Orbeon表單交互,例如點擊單行文本框內的字段(IE9)我在腳本文件「orbeon- [random guid style value] .js」中獲得了一個JS錯誤 ,行121與 「AjaxServer.exceptionWhenTalkingToServer(e,formID)」 突出顯示錯誤是「formID未定義」。

我不知道從哪裏開始尋找這裏,因爲我不熟悉 Tomcat,只知道我可以從Orbeon文檔中解讀什麼。

有人試圖嵌入這樣的形式亞軍,並體驗這種 錯誤?

我想下一步

[更新]:MVC的JSON()方法讓我思考,也許 Orbeon試驗場我建立在虛擬機不喜歡的事實,它是 從我的開發機器上的MVC應用程序獲取AJAX請求。有了這個 介意我試着從 dzhuvinov.com安裝CORS過濾器到Orbeon應用程序。根據將相關 配置添加到web.xml文件後的文檔,默認行爲是非限制性的,即它應該讓所有內容都通過。不幸的是 恢復Tomcat後,這並沒有幫助。

[更新2]:好好像CORS文檔是有點過時的和 默認看似相反如此設定的初始值 爲似乎有點那種出 - 雖然IE9仍然得到 JS錯誤消息。與此同時,在FireFox 12事情會好轉,但 現在的問題是如何通過JSESSIONID cookie Orbeon發送我 當我嵌入亞軍在MVC視圖,這樣當你 觸發Orbeon形式的任何AJAX發送JSESSIONID Cookie也是如此。

+0

你看過Orbeon [嵌入和代理Orbeon窗體](http://wiki.orbeon.com/forms/doc/contributor-guide/proxying-orbeon-forms)doc嗎?它提到了cookie轉發等。另見[Orbeon Proxy Portlet](https://github.com/orbeon/orbeon-forms/blob/master/src/scala/org/orbeon/oxf/portlet/OrbeonProxyPortlet.scala )。不要說這些例子很容易! – ebruchez

+0

是的,我做過了 - 問題是根據標題,這是ASP.NET MVC3(即.NET)而不是Java,因此很多文檔都是針對這一點,而沒有考慮更廣泛的集成。最後我寫了一個簡單的代理。 – Peter

回答

1

嗯,我想我的標題和信息有點誤導,所以我不妨關閉我自己的問題,跟隨「答案」。

爲了在MVC3應用程序(讀作任何非Java後端我會想象)Orbeon表格亞軍和它的工作嵌入我必須做到以下幾點:對

  1. 配置CORS過濾我在Tomcat 7上安裝Orbeon Forms(Dzhuvinov.com)以允許跨域AJAX。
  2. 從Orbeon返回的HTML partial中,使相對URL開始/ orbeon/xforms-server/absolute調用自定義代理。將JSESSIONID存儲在ASP.NET MVC Session對象中。
  3. 爲代理處理請求寫入控制器操作。使用存儲在(2)中的值設置JSESSIONID cookie後,此簡單代理將請求轉發到Orbeon Forms安裝。
相關問題