2011-03-30 107 views
1

我需要我的控制器返回包含更新的HTML代碼的AJAX JSON響應。Spring MVC - AJAX-JSON包含呈現的JSP視圖的響應

更新的HTML代碼是通過呈現JSP視圖創建的。

例如: JSP:

<tr> 
<td>${data1}</td> 
<td>${data2}</td> 
</tr> 

JSON響應:

{"columns" : "2", "rows":"1", "data":rendered view} 

目前我正在努力與 「我自己」 的OutputStream虛擬響應,並把在渲染視圖內容JSON響應,但沒有運氣。

除了這個事實我不能得到這個解決方案的工作,它感覺不對。 任何有關正確方法的提示?

感謝, 大利

回答

3

如果你想捕捉的觀點是在/WEB-INF/views/my.jsp,然後調用

request.getRequestDispatcher("/WEB-INF/views/my.jsp").include(request, myResponse);  

其中myResponse既可以是您已經創建了一個HttpServletResponseWrapper,或彈簧MockHttpServletResponse。在後一種情況下,您可以從getContentAsString()獲取呈現的輸出。

編輯下面

我跑進另一SO question周圍捕獲了一些指針HttpServletResponseWrappers,您可以使用servlet的響應。

兩個實現好看:

  1. DWR SwallowingHttpServletResponse
  2. SiteMesh的PageResponseWrapper

享受,

+0

雅...我創建了一個虛擬的反應是相似模擬響應,這個工程,但我有兩個後續問題: 1)jboss(tomcat)做了驗證,使用的響應是執行一個人,我不得不指定一個特定的系統屬性來禁用。任何其他方式? 2)使用ViewResolver獲取URL的任何方式?當我嘗試我得到關於應用程序上下文丟失的錯誤... – Ori 2011-03-30 19:49:21

+2

在這種情況下,我會嘗試使用包裝原始響應但捕獲輸出的HttpServletResponseWrapper。 – sourcedelica 2011-03-30 20:05:53

+0

添加了您可以使用的HttpServletResponseWrapper的鏈接。 – sourcedelica 2011-04-03 00:43:57