Каковы различия между Model, ModelMap и ModelAndView?



каковы основные различия между следующими Spring Framework классы?




  • Model

  • ModelMap

  • ModelAndView


используя Model.put(String,Object) мы можем получить доступ к значениям в .jsp файлы, но ModelMap.addAttribute(String,Object) также сделал то же самое. Я не понимаю разницы между этими классами.

2044   3  

3 ответов:

Model - это интерфейс, в то время как ModelMap - это класс.

ModelAndView - это просто контейнер для ModelMap и объект представления. Это позволяет контроллеру возвращать оба как одно значение.

различия между Model, ModelMap и ModelAndView

модель: это интерфейс. Он определяет держатель для атрибутов модели и в первую очередь предназначен для добавления атрибутов в модели.

пример:

@RequestMapping(method = RequestMethod.GET)
    public String printHello(Model model) {
          model.addAttribute("message", "Hello World!!");
          return "hello";
       }

ModelMap: реализация Map для использования при построении данных модели для использования с инструментами пользовательского интерфейса.Поддерживает цепные вызовы и генерацию атрибута модели имена.

пример:

@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: реализует интерфейс карты. Он также содержит метод карты.

ModelAndView: Как объяснил Барт, это позволяет контроллеру возвращать оба как одно значение.

Comments

    Ничего не найдено.