Boa noite. Estou com problema com o requestMapping, se eu escrevo value “/” a home não abre, se eu não coloco value ele abre, mas não abre os CSS’s.
http://localhost:8080 não carrega
@RequestMapping(value = "/", method = RequestMethod.GET)
public ModelAndView home(ModelAndView modelAndView) {
modelAndView = new ModelAndView("/index");
System.out.println("entrou no /home");
return modelAndView;
}
http://localhost:8080 carrega sem CSS( todo quebrado, pois está sem configuração)
@RequestMapping( method = RequestMethod.GET)
public ModelAndView home(ModelAndView modelAndView) {
modelAndView = new ModelAndView("/index");
System.out.println("entrou no /home");
return modelAndView;
}
Não sei bem o quais configurações adicionais eu preciso postar para conseguir descobrir onde eu errei. Eu gerei no site https://start.spring.io/ , estou usando spring web e security(tudo liberado por enquanto)
Cara, é simples, mapeia tua url como o “/”
Bom dia, Eu revisei tudo que é carregado do resouces para não ter erro. Revisei o template também. E abri pelo chrome.
O que eu entendi: se eu mapear
@RequestMapping( method = RequestMethod.GET)
qualquer url ele abre por esse metodo, e abre sem carregar o resources.
se eu coloco:
@RequestMapping(value = "/",method = RequestMethod.GET)
E entro na url http://localhost:8080/ Dá erro de pagina não encontrada (o firefox não estava dando aviso erro, só pagina em branco).
se eu coloco
@RequestMapping(value = "/index", method = RequestMethod.GET)
Abre normalmente (se eu remover a configuração sem value).
Vou procurar mais sobre esse problema, se eu encontrar a solução eu posto
Continuo sem encontrar a solução.
Únicos avanço que eu posso dizer que fiz é que: quando eu coloco o requestmapping para pegar “/” o spring não chama o metodo, se eu troco o mapping dele o metodo é chamado.
Será algum conflito com tomcat? Alguem já teve esse problema?
Como está teu controller? Posta a classe toda.
Aqui o codigo. Quando eu entro no " http://localhost:8080/index " o sysout do “index” aparece, quando eu entro em " http://localhost:8080/ " o sysout do "/’ não apareceu
package br.com.lojapet.controle;
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;
@Controller
public class HomeController {
@RequestMapping(value = "/index",method = RequestMethod.GET)
public ModelAndView index(ModelAndView modelAndView) {
modelAndView = new ModelAndView("index");
System.out.println("entrou no /index");
return modelAndView;
}
@RequestMapping(value= "/", method = RequestMethod.GET)
public ModelAndView home(ModelAndView modelAndView) {
modelAndView = new ModelAndView("index");
System.out.println("entrou no /");
return modelAndView;
}
}
1 curtida
Boa tarde!
Você já tentou apenas o: @RequestMapping("/")
???
Sim já tentei, Tentei novamente agora por via das duvidas. E tentei @RequestMapping(value= “/”)
no controller e tirei o value do metodo home. Continua a mesma coisa, O metodo “/index” é chamado e o “/” não é chamado (digo isso por causa do sysout)
tira essa “/” do modelAndView
modelAndView = new ModelAndView(“index”);
certifique-se que tenha um html na sua pasta de templates com o nome index. isso deve funcionar, para o caso do bloquei do css, recomendo desativar o spring security(tira a dependência dele no POM.xml) e ve se ainda acontece se não, procure na internet de como liberar os arquivos estáticos numa classe de configuração com spring security.
Eu não entendi, no modelAndView não tem “/”.
O metodo “home” (que chama “http://localhost:8080/”) e o “index” (que chama “http://localhost:8080/index”) abrem o mesmo arquivo. O problema de que não estava abrindo o css era pq eu tinha colocado value="" (vazio) e então qualquer URL (qualquer coisa mesmo) abri a home, só que sem css.
Eu tinha tentado tirar o security, mas tirei novamente e fiz mais um teste. Mesmo sem security o metodo home (requestmapping “/”) não é chamado, enquanto o medoto index(requestMapping “/index”) é chamado.
Edit: Não sei se é importante, mas vale salientar que eu estou usando spring boot, então ele que levanta o tomcat.
Não vale apena você retornar uma String nos métodos e apontar seu arquivos html no return?
Essa é a vantagem do Spring MVC ou SpringBoot, não? e no metodo home vc pode usar o redirect: para método index, também, bom ai fica ao seu critério.
Olha acabei de olhar um projeto que eu tenho com spring boot
os métodos são mapeados assim
@RequestMapping(value="/agenda", method=RequestMethod.GET)
public ModelAndView getView(){
List<Agenda> agendas = this.service.buscarAgendas();
ModelAndView mv = new ModelAndView("listAgenda");
mv.addObject("agendas",agendas);
return mv;
}
eu este HTML chamado listAgenda deve esta na pasta src/main/resources/templates
não tem segredo, caso não funciona pode ser que o maven deu algum problema de build ou alguma outra coisa estranha, faça outro projeto na sua IDE e teste o mapeamento.
Fiz o que vc falou, Fabioreis1415.
Criei um projeto novo. Abriu o home. Fui colocando pedaço por pedaço da configuração sempre testando. Até copiar tudo que eu tinha feito até agora. Está funcionando perfeitamente.
Muitíssimo obrigado a todos pela ajuda.
Alguém já teve um problema assim? Queria saber como saber evitar ou perceber que aconteceu
Tenso, problema de ambiente é comum no java, so vendo o log mesmo para saber realmente oque foi.
1 curtida
Da forma como você fez, funcionou pra mim, e eu já tinha tentado de várias formas e nada.
Boa tarde, amigos.
Sei que o tópico já foi resolvido mas eu passei por esse problema agora e queria compartilhar qual a solução correta.
Quando coloquei o ModelAndView, há duas importações possíveis:
Importei o portlet sem querer e a sintaxe do código ficou perfeita, nem percebi o erro. Não funcionou. O correto é importar o servlet. Arrumei a importação e funcionou perfeitamente.
Abraços!
1 curtida