2013-06-25 36 views
1

我正在開發一個使用spring mvc和dojo的web項目。我有一個獨特的問題。這是我正在做的:有條件地動態設置iframe對象的形式

  1. 提交一個表單到控制器並在控制器中生成pdf。在響應中設置pdf
  2. 表單的目標是一個iframe,以便pdf在提交後顯示在表單中。

這工作完美。 現在,我的問題是:
我正在使用spring mvc驗證器在窗體上進行驗證,如果有錯誤,我必須返回到同一頁面並顯示錯誤消息。 問題是要結合這兩種方法。如果我發現一個錯誤並返回返回視圖,因爲表單的目標是iframe,響應會顯示在iframe中,顯然我不想(我想顯示新頁面),如果一切都很好,我必須在響應中設置pdf並使用目標將其顯示在iframe中。我怎樣才能做到這一點?

回答

0

您沒有提及您是否使用ajax來提交form。如果它的ajax那麼它會很直接,我認爲你不是。

如果你正在做一個正常的form提交,然後

  1. 不要target形式遞交給iframe

    這解決了您的問題,但它引入了一個新的,處理PDF響應。

  2. 當您的表單提交經過validation的而不是返回PDF返回相同的view但也有一些javascript代碼,dojo在你的情況下,在頁面的底部彈出一個iframeurl點到PDF流。

    如果您正在使用Spring MVC 3.1你可以利用Spring MVC Flash Attributes分享您的表單處理方法和PDF服務方法之間的任何數據,如果使用的是以前版本的Spring可以使用Session或捕捉信息在redirect網址分享這兩種方法之間的任何信息。

+0

謝謝。我會試試這個。你能給我一些關於我可以寫什麼樣的dojo代碼以及在哪個地方的信息。我發現很難找到一個佔位符來顯示在完成頁面加載後執行的彈出窗口(dijit對話框)。我把它放在dojo.ready的末尾,它仍然會在頁面的某些部分被加載之前執行,這會導致一些問題。 – Abby

+0

對不起,我不知道'dojo'。理想情況下,您可以將代碼掛接到'document.onLoad',如果這導致代碼中出現問題,那麼下一個最好的機會是在底部包含'

0

如果你可以使用AJAX:

使用AJAX提交表單,併爲PDF返回一個URI。如果驗證正常,則將iframe的源設置爲返回的URI。

如果不能或不想使用AJAX:

再次返回同一個頁面,但是這個時間已經被設置爲PDF,如果驗證是確定的iframe的來源。