Ter esta função básica
protected ModelAndView handleRequestInternal(...) {
...
return new ModelAndView("welcomePage", "WelcomeMessage", message);
}
Eu sei que isso retornará modelandView. Eu sei que welcomePage
é meu viewname, então isso significa que algo como welcomepage.jsp
será chamado.
Mas estou confuso com o que é parte do modelo. O que é WelcomeMessage
e message
como o modelo funciona nesse cenário?
spring
spring-mvc
Premraj
fonte
fonte
WelcomeMessage
, no segundo exemplo, chamei-omodel
. Use um nome que faça sentido para você. O terceiro argumento contém as informações ... pode ser uma string simples, ou um POJO ou um mapa ... basicamente qualquer informação útil que você deseja exibir na visualização.new ModelAndView("welcomePage", "WelcomeMessage", message);
é uma abreviatura para
ModelAndView mav = new ModelAndView(); mav.setViewName("welcomePage"); mav.addObject("WelcomeMessage", message);
Olhando para o código acima, você pode ver que o nome da visualização é "welcomePage". Seu
ViewResolver
(geralmente configurado em.../WEB-INF/spring-servlet.xml
) irá traduzir isso em uma visualização. A última linha do código define um atributo em seu model (addObject("WelcomeMessage", message)
). É aí que o modelo entra em jogo.fonte
Tudo é explicado pelo javadoc para o construtor . É um construtor de conveniência que preenche o modelo com um par de atributo / valor.
Então ...
new ModelAndView(view, name, value);
é equivalente a:
Map model = ... model.put(name, value); new ModelAndView(view, model);
fonte
Aqui, neste caso, temos 3 parâmetros no Método, a saber, ModelandView .
De acordo com esta questão, o primeiro parâmetro é facilmente compreendido. Ele representa a Visualização que será exibida ao cliente.
Os outros dois parâmetros são como O Ponteiro e o Suporte
Portanto, você pode resumir assim
ModelAndView ( View, Pointer, Holder );
O Pointer apenas aponta as informações no The Holder
Quando o Controlador vincula a Visualização com essas informações, então no referido processo, você pode usar o Ponteiro na página JSP para acessar as informações armazenadas no Detentor para exibir essas informações respeitadas ao cliente.
Aqui está a representação visual do processo respeitado.
return new ModelAndView("welcomePage", "WelcomeMessage", message);
fonte
Bem, WelcomeMessage é apenas um nome de variável para mensagem (modelo real com dados). Basicamente, você está vinculando o modelo com welcomePage aqui. O modelo (mensagem) estará disponível em welcomePage.jsp como WelcomeMessage. Aqui está um exemplo mais simples:
ModelAndView("hello","myVar", "Hello World!");
Nesse caso, meu modelo é uma string simples (em aplicativos, será um POJO com dados buscados para o banco de dados ou outras fontes). Estou atribuindo a myVar e minha visualização é hello.jsp. Agora, myVar está disponível para mim em hello.jsp e posso usá-lo para exibição.
Na visualização, você pode acessar os dados:
${myVar}
Da mesma forma, você poderá acessar o modelo por meio da variável WelcomeMessage.
fonte
ModelAndView: o próprio nome explica que é uma estrutura de dados que contém dados de modelo e visualização.
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");
se o modelo contém apenas um único valor, podemos escrever da seguinte forma:
ModelAndView("view.name","key.name", "key.value");
fonte
@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**
fonte