Model, ModelMap e ModelView no Spring MVC
1. Visão geral
Neste artigo, veremos o uso do núcleoorg.springframework.ui.Model,org.springframework.ui.ModelMapeorg.springframework.web.servlet.ModelView fornecidos pelo Spring MVC.
2. Dependências do Maven
Vamos começar com a dependênciaspring-context em nosso arquivopom.xml:
org.springframework
spring-context
4.3.11.RELEASE
A versão mais recente da dependência do contexto spring pode ser encontradahere.
ParaModelAndView, a dependênciaspring-web é necessária:
org.springframework
spring-web
4.3.11.RELEASE
As versões mais recentes da dependência spring-web podem ser encontradashere.
E, se usarmos o Thymeleaf como nossa visão, devemos adicionar essa dependência ao pom.xml:
org.thymeleaf
thymeleaf-spring3
3.0.8.RELEASE
A versão mais recente da dependência do Thymeleaf pode ser encontradahere.
3. Model
Vamos começar com o conceito mais básico aqui - oModel.
Simplificando, o modelo pode fornecer atributos usados para renderizar visualizações.
Para fornecer dados utilizáveis a uma visualização, simplesmente adicionamos esses dados ao seu objetoModel. Além disso, mapas com atributos podem ser mesclados com instâncias deModel:
@GetMapping("/showViewPage")
public String passParametersWithModel(Model model) {
Map map = new HashMap<>();
map.put("spring", "mvc");
model.addAttribute("message", "example");
model.mergeAttributes(map);
return "viewPage";
}
4. ModelMap
Assim como a interfaceModel acima,ModelMap também é usado para passar valores para renderizar uma visualização.
A vantagem deModelMap é que nos dá a capacidade de passar uma coleção de valores e tratar esses valores como se estivessem dentro deMap:
@GetMapping("/printViewPage")
public String passParametersWithModelMap(ModelMap map) {
map.addAttribute("welcomeMessage", "welcome");
map.addAttribute("message", "example");
return "viewPage";
}
5. ModelAndView
A interface final para passar valores para uma visualização éModelAndView.
Essa interface nos permite passar todas as informações exigidas pelo Spring MVC em um retorno:
@GetMapping("/goToViewPage")
public ModelAndView passParametersWithModelAndView() {
ModelAndView modelAndView = new ModelAndView("viewPage");
modelAndView.addObject("message", "example");
return modelAndView;
}
6. A vista
Todos os dados que colocamos dentro desses modelos são usados por uma visualização - em geral, uma visualização modelada para renderizar a página da web.
Se tivermos um arquivo de modelo Thymeleaf direcionado pelos métodos de nosso controlador como sua visualização. Um parâmetro passado pelo modelo estará acessível no código HTML do thymeleaf:
Title
Web Application. Passed parameter : th:text="${message}"
O parâmetro passado aqui é usado por meio da sintaxe${message}, que é conhecido como um espaço reservado. O mecanismo de modelo Thymeleaf substituirá esse espaço reservado por um valor real de um atributo com o mesmo nome passado pelo modelo.
7. Conclusão
Neste tutorial rápido, discutimos três conceitos principais no Spring MVC - oModel, oModelMape oModelAndView. Também vimos exemplos de como a visualização pode fazer uso desses valores.
Como sempre, a implementação de todos esses exemplos e trechos de código pode ser encontradaover on Github.