Ответ 1
Model
- это интерфейс, а ModelMap
- класс.
ModelAndView
является просто контейнером как для ModelMap
, так и для объекта вида. Он позволяет контроллеру возвращать оба как одно значение.
В чем основные отличия между следующими Spring Framework классами?
Model
ModelMap
ModelAndView
Используя Model.put(String,Object)
, мы можем получить доступ к значениям в файлах .jsp
, но ModelMap.addAttribute(String,Object)
тоже сделал то же самое. Я не понимаю разницы между этими классами.
Model
- это интерфейс, а ModelMap
- класс.
ModelAndView
является просто контейнером как для ModelMap
, так и для объекта вида. Он позволяет контроллеру возвращать оба как одно значение.
Различия между Model, ModelMap и ModelAndView
Модель: Это интерфейс. Он определяет держатель для атрибутов модели и в первую очередь предназначен для добавления атрибутов в модель.
Пример:
@RequestMapping(method = RequestMethod.GET)
public String printHello(Model model) {
model.addAttribute("message", "Hello World!!");
return "hello";
}
ModelMap: Реализация карты для использования при создании данных модели для использования с инструментами пользовательского интерфейса. Поддерживает прикованные вызовы и генерирует имена атрибутов модели.
Пример:
@RequestMapping("/helloworld")
public String hello(ModelMap map) {
String helloWorldMessage = "Hello world!";
String welcomeMessage = "Welcome!";
map.addAttribute("helloMessage", helloWorldMessage);
map.addAttribute("welcomeMessage", welcomeMessage);
return "hello";
}
ModelAndView: Этот класс просто содержит оба, чтобы позволить контроллеру вернуть обе модели и представление в одно возвращаемое значение.
Пример:
@RequestMapping("/welcome")
public ModelAndView helloWorld() {
String message = "Hello World!";
return new ModelAndView("welcome", "message", message);
}
Модель: это интерфейс, содержащий четыре метода addAttribute и один метод merAttribute.
ModelMap: реализует интерфейс карты. Он также содержит метод Map.
ModelAndView. Как объясняет Барт, он позволяет возвращать контроллер как одно значение.