【问题标题】:Spring MVC - AJAX-JSON Response to contain rendered JSP viewSpring MVC - AJAX-JSON 响应包含渲染的 JSP 视图
【发布时间】:2011-07-26 06:14:38
【问题描述】:

我需要我的控制器返回一个包含更新的 HTML 代码的 AJAX JSON 响应。

更新的 HTML 代码是通过渲染 JSP 视图创建的。

例如: JSP:

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

JSON 响应:

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

目前我正在尝试使用“我自己的”输出流创建一个虚拟响应,并将渲染的视图内容放入 json 响应中,但没有运气。

除了我无法让这个解决方案发挥作用之外,它感觉不对。 有什么正确的方法吗?

谢谢, 奥利

【问题讨论】:

    标签: ajax json model-view-controller spring view


    【解决方案1】:

    如果您要捕获的视图在/WEB-INF/views/my.jsp 中,则调用

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

    其中 myResponse 是您创建的 HttpServletResponseWrapper 或 Spring MockHttpServletResponse。在后一种情况下,您可以从 getContentAsString() 获取渲染输出。

    在下面编辑

    我遇到了另一个 SO question 围绕捕获 servlet 响应,其中包含一些指向 HttpServletResponseWrappers 的指针,您可以使用它们。

    两个看起来不错的实现:

    1. DWR SwallowingHttpServletResponse
    2. 网站网PageResponseWrapper

    享受,

    【讨论】:

    • 是的...我创建了一个类似于模拟响应的虚拟响应,这可行,但我有两个后续问题:1)jboss(tomcat)验证使用的响应是实际的,我必须指定一个特定的系统属性来禁用。还有其他方法吗? 2) 有什么方法可以使用 ViewResolver 来获取 URL?当我尝试时,我收到有关缺少应用程序上下文的错误...
    • 在这种情况下,我会尝试使用 HttpServletResponseWrapper 包装原始响应但捕获输出。
    • 添加了可以使用的 HttpServletResponseWrappers 的链接。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-24
    • 2011-03-25
    • 1970-01-01
    • 2011-06-16
    • 1970-01-01
    • 1970-01-01
    • 2016-06-15
    相关资源
    最近更新 更多