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

Problemas ao acessar /produtos/form nos exercicios da aula 2.

Estou usando NetBeans com WildFly e quanto tento acessar o controller pelo endereço produtos/form recebo a seguinte saida no navegador: /casadocodigo/produtos/WEB-INF/views/produtos/form.jsp.

A pagina da home funcionou normalmente e quanto peço para o controller da home direcionar para o formulario de produtos a pagina aparece normalmente. Obrigado.

5 respostas

Fala Ítalo, tudo bem ?

Poste aqui o código do seu controller pra gente poder dar uma olhada! Essa saída no navegador é a descrição de uma resposta com status 404?

...

Quanto tento acessar a url http://localhost:8080/casadocodigo/produtos/form recebo esse texto:" /casadocodigo/produtos/WEB-INF/views/produtos/form.jsp", somente isso.

@Controller
public class ProdutosController {

    @RequestMapping("/produtos/form")
    public String form(){
        System.out.println("Entrando em controllers");
        return "produtos/form";
    }

    @RequestMapping("/produtos")
    public String grava(String titulo, String descricao, String paginas){
        System.out.println(titulo);
        System.out.println(descricao);
        System.out.println(paginas);
        return "ok";
    }
}
@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;
    }
}

No console do servidor também nao aparece nenhuma saida dos sysout que fiz no controller....

Obrigado pela ajuda.

Na verdade o sysout "entrando em controllers" aparece normalmente no console.

solução!

Fala ítalo ..

No trecho que define o bean do InternalResourceViewResolver coloque a barra inicial no caminho definido como prefixo.

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

Sem a barra temos um caminho relativo, portanto quando o Spring redireciona para a página ele adiciona o caminho da jsp sobre o endereço acessado previamente. O que explica o caminho /casadocodigo/produtos/WEB-INF/views/produtos/form.jsp obtido como resposta.

Com a barra temos um caminho absoluto, sendo assim quando redirecionado à JSP o Spring fará a busca através da raiz (webapp).

Espero ter ajudado. Abraço!

Muito obrigado, Rafael. Deu certo aqui.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software