【问题标题】:Returing ModelAndView vs DTO from the Spring Controller从 Spring 控制器返回 ModelAndView 与 DTO
【发布时间】:2014-11-24 18:43:33
【问题描述】:
我试图了解使用 Spring Controller 的结果呈现 UI 的最佳方式。通常,如果我不使用 AJAX 调用并使用来自控制器的响应渲染整个页面,我会返回模型和视图。但是,每当我更新 JSP 的一部分时,我都会使用 AJAX 调用并将响应作为 DTO 与 @ResponseBody 一起返回,并提取 DTOs 字段以插入 HTML 元素。
所以我的问题是什么是从控制器发送响应的有效方法,这样我就不必编写代码来插入 HTML 元素中的响应?
【问题讨论】:
标签:
jquery
ajax
spring
spring-mvc
【解决方案1】:
@Bhaskara - 感谢您的建议。是的,我们绝对可以使用 JSON 作为响应。
但我的问题不同。它关于返回视图 inf AJAX 调用,以便可以更新部分 div。在编写了简单的骨架应用程序之后,我们似乎可以通过以下方式实现:
- 使用 div 创建母版页。
- 创建单独的 JSP 页面以加载到 div。使用 JSTL(或任何其他工具)来
- 从控制器返回 ModelAndView(带模态的 JSP)。
- 在 AJAX 成功回调函数中使用 JSP 加载 div。
希望其他人也能从这种方法中受益。
【解决方案2】:
您可以返回 application/json 作为响应。作为 Spring 项目的一部分,在类路径中有 Jackson 库,然后将模型(DTO ?)作为@ResponseBody 返回。 Spring 自动将您的模型转换为 json 并将其作为 HTTP 响应返回(到您的 AJAX 调用)。 Javascript(尤其是 JQuery)对解析 JSON 有很好的支持