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.
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);
}
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.