Spring MVC的ModelAndView中的Model是什么?

79 spring spring-mvc

有这个基本功能

protected ModelAndView handleRequestInternal(...) {
    ...
    return new ModelAndView("welcomePage", "WelcomeMessage", message);
}
Run Code Online (Sandbox Code Playgroud)

我知道这将返回modelandView.我知道这welcomePage是我的viewname所以这意味着welcomepage.jsp会被调用.

但我对什么是模型部分感到困惑.什么是WelcomeMessagemessage在该场景和模式如何工作的?

lim*_*imc 111

该模型提供占位符以保存您要在视图上显示的信息.它可以是一个字符串,在上面的示例中,或者它可以是包含一堆属性的对象.

例1

如果你有...

return new ModelAndView("welcomePage","WelcomeMessage","Welcome!");
Run Code Online (Sandbox Code Playgroud)

...然后在你的jsp中,要显示消息,你会这样做: -

Hello Stranger! ${WelcomeMessage} // displays Hello Stranger! Welcome!
Run Code Online (Sandbox Code Playgroud)

例2

如果你有...

MyBean bean = new MyBean();
bean.setName("Mike!");
bean.setMessage("Meow!");

return new ModelAndView("welcomePage","model",bean);
Run Code Online (Sandbox Code Playgroud)

...然后在你的jsp中,你可以这样做: -

Hello ${model.name}! {model.message} // displays Hello Mike! Meow!
Run Code Online (Sandbox Code Playgroud)

  • 所以这意味着WelcomeMessage是在jsp和"Welcome!"中使用的变量名..你能告诉我在哪里可以找到第二个参数可以采取的其他东西,就像现在我明白它需要变量名称,型号名称,是否还有其他可以采取的东西 (4认同)
  • 第二个参数表示模型的逻辑名称.您可以将其命名为您想要的任何名称,但这是您在JSP中引用模型时将使用的名称.在我的第一个例子中,我称之为"WelcomeMessage",在第二个例子中,我称之为"model".使用对您有意义的名称.第三个参数包含信息......它可以是一个简单的字符串,或一个POJO或一个地图......基本上你想要在视图中显示任何有用的信息. (4认同)

thr*_*ups 20

新的ModelAndView("welcomePage","WelcomeMessage",消息);

是简写

new ModelAndView("welcomePage", "WelcomeMessage", message);
Run Code Online (Sandbox Code Playgroud)

查看上面的代码,您可以看到视图名称是"welcomePage".您的ViewResolver(通常在.../WEB-INF/spring-servlet.xml中设置)将其转换为View.代码的最后一行在模型中设置一个属性(addObject("WelcomeMessage",message)).这就是模型发挥作用的地方.


Ste*_*n C 15

所有这些都是由构造函数的javadoc解释的.它是一个便利构造函数,使用一个属性/值对填充模型.

所以......

   new ModelAndView(view, name, value);
Run Code Online (Sandbox Code Playgroud)

相当于:

   Map model = ...
   model.put(name, value);
   new ModelAndView(view, model);
Run Code Online (Sandbox Code Playgroud)


Tah*_*Mir 14

在这种情况下,我们在Method中有3个参数,即ModelandView.
根据这个问题,第一个参数很容易从这个问题中理解.它表示将显示给客户端的视图.
其他两个参数就像指针持有者
因此你可以这样总结

ModelAndView(View,Pointer,Holder );

指针只是将信息指向The Holder

控制器绑定查看此信息,然后在该过程中,你可以使用鼠标指针JSP页面来访问存储在信息的持有人,以显示尊重的信息给客户端.
以下是对受尊重流程的直观描述.

return new ModelAndView("welcomePage", "WelcomeMessage", message);
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述