isaquebressy

January 8, 2016

[Aprendendo Spring MVC] ModelAndView

Para enviar os dados para a JSP é um pouco diferente. Ao invés de retornar uma String com o nome da JSP, retornamos um objeto do tipo ModelAndView que conterá a view e objetos contendo os dados que poderão ser adicionados.

@RequestMapping("/hello")
public ModelAndView sayHello(User user) {
  ModelAndView modelAndView = new ModelAndView("user/hello");
  mv.addObject("user", user);
  return modelAndView;
}

No JSP, podemos acessar os dados através de EL.

<html>
  <body>
    Hello, ${user.name}
  </body>
</html>

Podemos também, ao invés de retornar um ModelAndView, continuar retornando uma String com o nome da view e receber como parâmetro um objeto do tipo Model na assinatura do método. Daí é só adicionar um atributo a este Model que o mesmo passará a ser acessível na JSP.

@RequestMapping("/hello")
public String sayHello(User user, Model model) {
  model.addAttribute("user", user);
  return "user/hello";
}

Das duas maneiras, o resultado é o mesmo. Como é indiferente, é bom escolher uma delas e seguir o padrão.

AJAX

Existe também a opção de Uma action não redirecionar para uma JSP, fazendo apenas o que foi requisitado e retornando um resultado ou um status de sucesso (http status 200). Para tal, a action deve retornar void e receber um HttpServletResponse, onde seu status deve ser setado para 200.

@RequestMapping("/rmUser")
public void paga(Long id, HttpServletResponse response) {
  //… deleting user…
  response.setStatus(200);
}

Uso do jQuery (e outras libs)

Para a utilização de recursos dentro do projeto (como a importação do jQuery), deve-se informar ao Spring para não responder à essas chamadas. Para tal, deve-se acrescentar ao spring-context.xml a seguinte configuração:

<mvc:default-servlet-handler/>

Assim, o Spring não vai capturar a requisição para tentar achar uma action que responda pelo endereço chamado.


Category: java learning spring-mvc

Tags: framework java mvc


# Back