Что такое модель в ModelAndView от Spring MVC?
имея эту основную функцию
protected ModelAndView handleRequestInternal(...) {
...
return new ModelAndView("welcomePage", "WelcomeMessage", message);
}
Я знаю, что это возвращает modelandView.
Я знаю, что welcomePage Это мое имя представления, так что это означает что-то вроде welcomepage.jsp будет вызван.
но я путаю с тем, что модель часть.
Что такое WelcomeMessage и message и как модель работает в этом сценарии?
7 ответов:
модель представляет собой заполнитель для хранения информации, которую вы хотите отобразить на виде. Это может быть строка, которая находится в вашем примере выше, или это может быть объект, содержащий кучу свойств.
Пример 1
если у вас есть...
return new ModelAndView("welcomePage","WelcomeMessage","Welcome!");... затем в вашем jsp, чтобы отобразить сообщение, вы сделаете: -
Hello Stranger! ${WelcomeMessage} // displays Hello Stranger! Welcome!Пример 2
если у вас есть...
MyBean bean = new MyBean(); bean.setName("Mike!"); bean.setMessage("Meow!"); return new ModelAndView("welcomePage","model",bean);... затем в ваш JSP, вы можете сделать:-
Hello ${model.name}! {model.message} // displays Hello Mike! Meow!
Это все объясняется javadoc для конструктор. Это удобный конструктор, который заполняет модель одной парой атрибут / значение.
Так ...
new ModelAndView(view, name, value);эквивалентно:
Map model = ... model.put(name, value); new ModelAndView(view, model);
new ModelAndView ("welcomePage"," WelcomeMessage", message);
- это сокращение от
ModelAndView mav = new ModelAndView(); mav.setViewName("welcomePage"); mav.addObject("WelcomeMessage", message);глядя на код выше, вы можете увидеть имя представления "welcomePage". Ваш ViewResolver (обычно настраивается .../ WEB-INF / spring-сервлет.xml) переведет это в представление. Последняя строка кода задает атрибут в вашей модели (addObject ("WelcomeMessage", message)). Вот где модель вступает в игру.
вот в этом случае, у нас есть 3 параметра в методе, а именно ModelandView.
Согласно этому вопросу, первый параметр легко понять из вопроса. Он представляет собой посмотреть который будет отображаться для клиента.
Остальные два параметра так же, как Указатель и Держатель
Следовательно, вы можете подвести итог следующим образомModelAndView(Вид, Указатель, Держатель);
Указатель просто указывает данные в Держатель
когда контроллер связывает посмотреть С этой информацией, то в указанном процессе, вы можете использовать Указатель на JSP страница для доступа к информации, хранящейся в Держатель чтобы показать эту уважаемую информацию клиенту.
вот визуальное изображение уважаемого процесса.return new ModelAndView("welcomePage", "WelcomeMessage", message);
Ну, WelcomeMessage-это просто имя переменной для сообщения (моделью данных). В принципе, вы связываете модель с welcomePage здесь. Модель (сообщение) будет доступна в welcomePage.jsp как WelcomeMessage. Вот более простой пример:
ModelAndView("hello","myVar", "Hello World!");в этом случае моя модель представляет собой простую строку (в приложениях это будет POJO с данными, полученными для БД или других источников.). Я назначаю его myVar и мой взгляд привет.JSP-страница. Теперь, myVar доступен для меня в привет.jsp и я можем использовать его для отображения.
в представлении, вы можете получить доступ к данным:
${myVar}аналогично, вы сможете получить доступ к модели через переменную WelcomeMessage.
ModelAndView: само имя объясняет, что это структура данных, которая содержит данные модели и представления.
Map() model=new HashMap(); model.put("key.name", "key.value"); new ModelAndView("view.name", model); // or as follows ModelAndView mav = new ModelAndView(); mav.setViewName("view.name"); mav.addObject("key.name", "key.value");Если модель содержит только одно значение, то можно написать так:
ModelAndView("view.name","key.name", "key.value");
@RequestMapping(value="/register",method=RequestMethod.POST) public ModelAndView postRegisterPage(HttpServletRequest request,HttpServletResponse response, @ModelAttribute("bean")RegisterModel bean) { RegisterService service = new RegisterService(); boolean b = service.saveUser(bean); if(b) { return new ModelAndView("registerPage","errorMessage","Registered Successfully!"); } else { return new ModelAndView("registerPage","errorMessage","ERROR!!"); } } /* "registerPage" is the .jsp page -> which will viewed. /* "errorMessage" is the variable that could be displayed in page using -> **${errorMessage}** /* "Registered Successfully!" or "ERROR!!" is the message will be printed based on **if-else condition**

Comments