[RESOLVIDO] @RequestMapping(value = "/") não carrega

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