Oi pessoal, tudo certo?
Só para lembrar que ainda estou com aquela dúvida de como fazer para mapear aquela url composta tal como /produtos/form. Quando mapeio deste jeito, o spring não consegue retornar o recurso de view jsp que está dentro da pasta WEB-INF/views/produtos/form.jsp. Vou postar aqui meus arquivos de configuração do spring, bem como o ProdutosController.
Vocês podem notar que tive que mapear o ProdutosController de forma diferente da que estava no curso. Mas gostaria de auxílio para poder mapear como está no curso.
Abraços.
Segue implementação:
Esse é o ServletSpringMvc
package br.com.casadocodigo.loja.conf;
import javax.servlet.Filter;
import org.springframework.web.filter.CharacterEncodingFilter;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
public class ServletSpringMvc extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return null;
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class[] { AppWebConfiguration.class, JpaConfiguration.class };
}
@Override
protected String[] getServletMappings() {
return new String[] { "/" };
}
@Override
protected Filter[] getServletFilters() {
CharacterEncodingFilter encodingFilter = new CharacterEncodingFilter("UTF-8");
return new Filter[] { encodingFilter };
}
}
Agora, segue o AppWebConfiguration
package br.com.casadocodigo.loja.conf;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
import br.com.casadocodigo.loja.controllers.HomeController;
import br.com.casadocodigo.loja.dao.ProdutoDao;
@EnableWebMvc
@ComponentScan(basePackageClasses = { HomeController.class, ProdutoDao.class })
public class AppWebConfiguration {
@Bean
public InternalResourceViewResolver getResolver() {
return new InternalResourceViewResolver("WEB-INF/views/", ".jsp");
}
}
Agora, segue o ProdutosController
package br.com.casadocodigo.loja.controllers;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
import br.com.casadocodigo.loja.dao.ProdutoDao;
import br.com.casadocodigo.loja.modelo.Produto;
import br.com.casadocodigo.loja.modelo.TipoPreco;
@Controller
public class ProdutosController {
@Autowired
private ProdutoDao dao;
@RequestMapping("/form")
public ModelAndView form() {
System.out.println("Entrando no formulário de cadastro de livros");
ModelAndView modelAndView = new ModelAndView("produtos/form");
modelAndView.addObject("tipos", TipoPreco.values());
return modelAndView;
}
@RequestMapping(value = "/produtos", method = RequestMethod.POST)
public String grava(Produto produto) {
System.out.println(produto);
dao.gravar(produto);
return "produtos/ok";
}
@RequestMapping(value = "/produtos", method = RequestMethod.GET)
public ModelAndView listar() {
ModelAndView modelAndView = new ModelAndView("produtos/lista");
List<Produto> produtos = dao.listar();
modelAndView.addObject("produtos", produtos);
return modelAndView;
}
}