何时在spring中使用modelandview vs model?

z18hc3ub  于 2021-06-30  发布在  Java
关注(0)|答案(3)|浏览(294)

这听起来可能很愚蠢 Spring Maven们,但我不得不问:
你如何决定何时使用 ModelAndView 什么时候用 Model ?
经过所有的研究,我发现最好的答案是这个。它提到 ModelAndView 是一种古老的方式 Model 用一个 String 退货是一种新的进货方式 Spring .
我的问题是,我们应该反对旧的吗 ModelAndView 既然我们有 Model 在手上?或者你需要用什么箱子 ModelAndView 为了它?
还有,有人知道为什么要改变吗 ModelAndViewModel 以及 String 值为 View ,有什么好处?

fkvaft9z

fkvaft9z1#

从seo的Angular 来看,我们可以使用modelandview来应用301重定向,如果我们对此有任何要求,我们就不能使用model来实现这一点。

yv5phkfx

yv5phkfx2#

我发现的一个区别是modelandview对象可以设置对视图对象的直接引用:

ModelAndView mav = ...
mav.setView(myView);

但是,如果使用模型和字符串,则需要视图解析器将视图名称解析为实际视图

public String myHandler(...) {
   return "myviewname"; // has to have a resolver from "myviewname" into an actual view
}
zbdgwd5y

zbdgwd5y3#

我总是使用控制器方法返回的方法 ModelAndView . 只是因为它倾向于使控制器方法更简洁一点。方法参数现在是严格的 input 参数。以及所有 output 相关数据包含在方法返回的对象中。
这个 ModelAndView 风格似乎与那些不喜欢更新方法输入参数的人产生共鸣。坚持认为这将构成一种副作用,一种危险的模式,因为您无法可靠地预测该方法将要执行的操作—它可能返回返回的对象中的数据,也可能更新了任何输入参数中的任何内容。
所以有些人还是会继续喜欢 ModelAndView .
新款式 Model 作为方法参数,返回字符串作为视图名称。似乎来自一个稍微不同的设计方法。在这里,模型对象被认为是传递给多个处理程序的事件或项,然后返回到呈现它们的视图。它提醒我在awt/swing世界中如何处理事件。此模型与多个处理程序可以在 Model 对象,直到它到达一个视图。
因此,归根结底,似乎没有明确的理由批评或推广这两种方法。你应该使用更符合你整体设计理念的风格。
希望这有帮助。

相关问题