2013-06-26 34 views
1

我想通過Spring 3 Portlet提供一種提供CSV下載的方法。我有一種方法使用@ResourceMapping註釋來定義一個處理程序,它以@ModelAttribute的形式生成一些報告參數,並生成報告並將其返回。我遇到的catch-22正在驗證從客戶端表單發送來的參數。在Spring 3 portlet中從ResourceMapping重定向回Portlet

如果我使處理程序爲@ResourceMapping,我可以設置標題並使用ResourceResponse寫出報告,但我似乎無法弄清楚如何將用戶重定向到Portlet視圖時出現錯誤輸入未通過驗證。但是,如果我讓一個@ActionMapping,我可以再檢查BindingResult S和需要它們轉發回的形式,但ActionResponse不允許我設置Content-Disposition頭,也沒有寫出來的CSV字節,這是對發送報告至關重要。

我在這裏完全損失,因爲我甚至不知道我的選擇是什麼。是否有可能做我想用Portlet做的事情?是否還有其他示例可供我們研究可能的解決方法?

回答

0

我建議你同時使用@ActionMapping@ResourceMapping滿足您的要求。

正如你說你能使用@ActionResponse,我會告訴你如何處理Resource Streaming處理validation錯誤。

正如你所知道的每@ActionResponse後跟@RenderResponse,只返回了同樣的觀點,但是,有一個隱藏的iframe此時其src指向ResourceURL

現在Request您在@ResourceMapping收到的東西已經是Validated。所以,你現在可以爲你的CSV服務。

我不知道你的UI有多複雜,如果你在你的應用程序中使用jsp作爲views。如果管理得好,Validation可以通過@ResourceMapping來處理。

謝謝

+0

我給你點頭,因爲這是一個很好的解決方案。但是,我選擇了使用AJAX調用進行驗證的不同路由,然後在驗證輸入時再次調用AJAX來獲取CSV。但是,iframe是我沒有想到的一個想法。 – CodeChimp