【问题标题】:What is the best way to generate view from controllers?从控制器生成视图的最佳方法是什么?
【发布时间】:2016-05-10 08:40:48
【问题描述】:

我对 Spring MVC 框架非常陌生,但我使用 Struts 已经有一段时间了。在 Struts 中,每个视图都可以与“ActionForm”对象绑定,并且可以生成视图以提取该对象。现在我正在转向 Spring MVC,并且对从控制器生成视图有疑问。
目前我知道以下两种从控制器构建视图的方法

  1. 为每个请求从控制器返回“ModelAndView”对象,并在相应的 JSP(视图)中提取数据。

  2. 返回 JSON 并将其提取到 JSP(视图)中。

这是Spring MVC中生成View的正常方式吗?

我发现了这个question,它描述了控制器和视图之间通信的最佳实践。我想知道,它是在 Spring MVC 中完成的。

【问题讨论】:

  • 模型,即存储在 ModelAndView 中的 Java 对象,确实是视图应该显示的内容。无需将任何内容转换为 JSON。

标签: spring-mvc


【解决方案1】:

我使用 Spring 多年,我认为使用控制器和视图的最佳方式是使用 ModelAndView 对象。

这里我给你一个来自 Spring 文档的关于 Web 应用程序的链接:

http://docs.spring.io/autorepo/docs/spring/3.2.x/spring-framework-reference/html/mvc.html

【讨论】:

  • 如何将视图与模型解耦?
  • @RomanC 选项可以始终返回 JSON 格式的数据,并且在视图中您可以根据需要呈现它或通过 xslt 呈现 xml,这是您的意思吗?
  • JSON 数据如果不属于模型,则无法在视图中呈现。这是不同的架构,而不是模型和视图捆绑在一起的 MVC。
  • 那么我猜模型和视图需要始终以某种方式耦合,视图需要知道接收数据的格式/结构
  • 如果它们是耦合的,那么它们之间存在依赖关系,在这种情况下数据的格式并不重要。
【解决方案2】:
  1. 一种方法是从 Controller 创建 ModelAndView,然后将其转发到 JSP。

  2. 另一种方法是使用 spring xml 文件中的 mvc:view-controller 标记

    通过使用第二个选项,您可以直接将请求附加到 JSP 页面,而无需转到控制器。

【讨论】:

    【解决方案3】:
    • 如果您使用 Web 应用程序,使用用户 ModelAndView 和其中关联的对象的最佳方式。具有名称值对属性的返回对象也很好,即 POJO
    • 如果您使用 Web 服务并公开 Web 以外的 Web 服务,例如移动设备,那么您肯定会使用 JSON。

    【讨论】:

      猜你喜欢
      • 2021-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-27
      • 1970-01-01
      • 2020-07-04
      • 2023-04-08
      • 1970-01-01
      相关资源
      最近更新 更多