一尘不染

什么时候在Spring中使用ModelAndView和Model?

spring-mvc

这对Spring专家们来说可能听起来很愚蠢,但是我不得不问:
您如何决定何时使用ModelAndView以及何时使用Model

毕竟,我研究了我发现的最佳答案就是这个。它已经提到,ModelAndView是中的一种旧方法,而Model带有String返回值的是中的一种新方法Spring

我的问题是,ModelAndView既然我们Model手头有旧的东西,该不该弃用?还是有任何需要使用ModelAndView的情况?

此外,没有人知道为什么要改ModelAndViewModelStringView,和有什么好处?


阅读 1151

收藏
2020-06-01

共1个答案

一尘不染

我总是使用控制器方法返回的方法ModelAndView。仅仅因为它会使控制器方法变得更简洁。方法参数现在是严格的input参数。并且所有output相关数据都包含在方法返回的对象中。

这种ModelAndView风格似乎引起了不喜欢将输入参数更新为方法的人们的共鸣。坚持认为这将构成副作用,这是一种危险的模式,因为您无法可靠地预测该方法将要执行的操作-
它可能会在返回的对象中返回数据,或者可能会更新任何输入参数中的任何内容。

所以有些人仍然会继续喜欢ModelAndView

新样式,带有Modelas方法参数和返回的字符串作为视图名称。似乎来自稍微不同的设计方法。在这里,模型对象被认为是传递给多个处理程序的事件或项目,然后再返回到呈现它们的视图。它使我想起在AWT
/ Swing世界中如何处理事件。该模型与多个处理程序可以在Model对象之上构建直到到达视图的方法更加一致。

因此,归根结底,似乎没有明确的理由批评或推广这两种方法。您应该使用与您的总体设计理念更一致的样式。

希望这可以帮助。

2020-06-01