5
respostas

Erro de refresh(F5) com spring no back-end

Estou com dificuldade para resolver o sistema de rotas do AngularJS no caso de refresh. Quando chamo via

<a href="listar"...

funciona normalmente, mas ao apertar F5 ou digitar diretamente na barra http://localhost:8080/listar (sem o #) dá erro.

main.js

$locationProvider.html5Mode(true);
    $routeProvider    
    .when('/', {        
        templateUrl:'templates/partials/login.html',
        controller:'MeuController'
    })    
    .when('/listar', {
        templateUrl:'templates/partials/listar.html',
        controller:'MeuController'
    })    
    .otherwise({redirectTo: '/'});

controller spring

    @RequestMapping("/")
    public String forward() {
        return "index";
    }

Gostaria de resolver com html5Mode(true) Grato!

5 respostas

Fala aí Wesley, tudo bem? Poderia postar o erro que dá? Ficaria mais fácil tentar identificar e lhe ajudar.

Fico no aguardo.

Bom dia Matheus!

Dá erro 404

Whitelabel Error Page This application has no explicit mapping for /error, so you are seeing this as a fallback.

Tue Dec 04 16:34:40 BRT 2018 There was an unexpected error (type=Not Found, status=404). No message available

Certo, como você está servindo o index.html? Através do um NGINX, Express, apache?

Teoricamente esse problema ocorre porque seu servidor não conhece a rota /listar, o que você precisa fazer, é mapear todas as rotas de /* para devolver o index.html.

Espero ter ajudado.

Matheus, estou aproveitando uma migração de um projeto pequeno no meu trabalho para por em por em prática o que estou aprendendo aqui neste curso de angularjs. No caso aqui é que o deploy deve ser feito no wildfly(10).

Tive que que alterar o projeto para war...

Certo, então no wildfly, você vai precisar mapear as rotas da porta 4200 para devolver o seu index.html ou .war.

Basicamente: :4200/* mandar para o index.html.

Espero ter ajudado.