Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

RequestMapping funcionando parcialmente

Olá, estou com um erro que tem apresentado um comportamento estranho no request mapping. Se eu coloco apenas um nome no mapeamento [Ex: @RequestMapping("cadastro") ] , a pagina é encontrada, mas se adiciono mais alguma coisa [ex: @RequestMapping("cadastro/tela")] recebo o erro 404.

O caminho apontado pelo tomcat é este: HTTP Status 404 - /casadocodigo2/cadastro/WEB-INF/views/produtos/form.jsp (a única coisa errada neste endereço é o termo "cadastro", ele não existe na estrutura do projeto.

Alguma idéia de pq isto acontece?

package org.casadocodigo2.loja.controllers;

import org.casadocodigo2.loja.models.Produto;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class ProdutosController {

    @RequestMapping("cadastro/tela")
    public String form()  {
        System.out.println("passei pelo form");
        return "produtos/form";
    }

    @RequestMapping("/produtos2")
    public String grava(Produto produto) {
        System.out.println("passei pelo grava");
        System.out.println(produto.toString());
        return "produtos/ok"; 
    }

}
package org.casadocodigo2.loja.conf;

import org.casadocodigo2.loja.controllers.HomeController;
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;

@EnableWebMvc
@ComponentScan(basePackageClasses= {HomeController.class})
public class AppWebConfiguration {

    @Bean
    public InternalResourceViewResolver internalResourceViewResolver() {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        System.out.println("passei pelo InternalResourceViewResolver");
        resolver.setPrefix("WEB-INF/views/");
        resolver.setSuffix(".jsp");
        return resolver; 
    }
}
2 respostas
solução!

Glauco, tudo bem ?

Cara tenta fazer isso:

        resolver.setPrefix("/WEB-INF/views/");

Oi matheus, resolveu o problema sim, obrigado. Mas ainda não entendi pq funciona "pela metade".