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

Erro no direcinamento da URI

Olá, em uma dúvida anterior mencionei que havia direcionamento de endereço de URI diferente do instrutor pois estou utilizando o intellij para realizar o projeto e desta forma fica diferente da configuração do eclipse. (post https://cursos.alura.com.br/forum/topico-pagina-inicial-executando-no-index-html-executando-com-intellij-63302 )

Consegui resolver esta situação para ficar com a mesma configuração de URI do instrutor alterando o RequestMapping do homecontroller para

@RequestMapping("/casadocodigo")

e funcionou para a home. Porém quando tentei fazer a mesma coisa para o formulário da nova classe ProdutosController

@Controller
public class ProdutosController {

    @RequestMapping("/casadocodigo/produtos/form")
    public String form(){
        System.out.println("testando o Form");
        return "produtos/form";
    }
}

o spring se perde apontando para uma view em um caminho que não existe:

HTTP Status 404 - /casadocodigo/produtos/WEB-INF/views/produtos/form.jsp

O spring acabou colocando no retorno o caminho que coloquei no mapping na frente do caminho correto da view que seria só o WEB-INF/views/produtos/form.jsp

Já tentei alterar de diversas formas, mas somente consigo apontar para a view correta se eu tirar a parte ""/casadocodigo/produtos/" e deixar só o "/form" no mapping, mas desta forma fica acessando a uri http://localhost:8080/form que não é o que eu gostaria.

Poderiam me auxiliar?

5 respostas

Boa Tarde Jeison, a principio do seu método form e request, dentro do seu WEB-INF deve haver uma pasta Views e dentro da views outra pasta chamada Produtos e por fim o arquivo Form.jsp. Pode me mostrar sua classe -> AppWebConfiguration?

Olá Clovis, sim estou com esta estrutura de pastas. Segue abaixo minha classe AppWebConfiguration

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

    @Bean
    public InternalResourceViewResolver internalResourceViewResolver(){
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("WEB-INF/views/");
        resolver.setSuffix(".jsp");

        return resolver;
    }
}
solução!

O seu está assim: resolver.setPrefix("WEB-INF/views/"); Tente altera-lo para: resolver.setPrefix("/WEB-INF/views/");

Funcionou! Muito obrigado =)

Por Nada :D