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

Habilitando o modo HTML 5 no server

Gostaria de uma orientação sobre como habilitar o modo HTML 5 no servidor.

Estou iniciando a construção de uma aplicação que tem parte em JSF e uma nova parte estará em Angular, sendo essas partes empacotadas em um único WAR. Assim, as rotas do angular estão "dentro" do contexto da servlet do JSF. Ex.: localhost:8080/minha-aplicacao/pedido/new, onde minha-aplicação é o contexto JSF/Servlet e pedido/new seria a rota do angular.

Iniciei a criação da estrutura da aplicação em Angular criando várias diretivas e combinando estas diretivas dentro do index.html. Até então funcionou ok.

Quando separei o que tinha feito para substituir pela ng-view e deixar o $routeProvider resolver minhas views no index.html, percebi que ao digitar essas rotas, uma requisição é feita ao servidor e me devolve um erro 404 . Tentei com e sem o uso da #, mas não obtive êxito.

Como servidor, estou usando o JBoss 6.3.

Poderia explicar melhor o que é este modo HTML 5 no servidor e como configurar? Meu entendimento sobre a requisição/rota/HTML 5 está correto?

4 respostas

Tentei alterar também o <base href="/minha-aplicacao/"> mas também não funcionou.

Oi Daniel, olha, não faz sentido algum usar JSF com Angular, aliás quem é do mundo Java muitas vezes escolhe usar o Angular para abandonar o JSF (quando o arquiteto decide que essa é a melhor escolha) (mas eu acho que entendi o que você quer fazer, veja abaixo)

Para usar Angular, você deve criar endpoints REST porque Angular em sua natureza foi feita para criar aplicações stateless que consomem serviços. Em JSF, você não devolve JSON ou tem uma api statless, é tudo statefull e o que você retorna para o servidor são páginas.

No entanto se você criou pequenos serviços com Servlet pura em conjunto com JSF, as páginas com Angular podem consumir esses serviços se eles devolvem JSON e usam o padrão REST.

Para usar o modulo HTML5 seu servidor deve devolver sempre a mesma página para qualquer request. É claro, se os requests forem de API, eles são processados, se não, sempre deve cair na mesma página. Por isso que Angular é feito para criar Single Page Application (Aplicações de única página).

Outro ponto é que cada servidor Java, Php, Node, etc configura esse modo de uma maneira. Não faço ideia como configurar no servidor de aplicação JBOSS. Vamos deixar aberto aqui para ver se alguém ajuda.

solução!

Consegui ajudar em algo? Aguardo seu feedback!

Flávio,

entendo ser um cenário ideal abandonar o JSF e ir para o Angular ou qualquer outro framework JS, mas acho que essa não é a realidade de muitas empresas que já tem um "legado" para manter.

Sobre a questão do modo HTML5, resolvi isso re-estruturando um pouco a organização que tinha planejado inicialmente e com isso retornar a mesma página como indicado.

Isso, até o momento, resolveu.

Imaginava que antes do client fazer uma "requisição" para a nova rota, o Angular iria interceptar isso e redirecionar internamente. Para mim não faz sentido algum fazer uma requisição para o servidor retornar a sempre a mesma página e após o retorno, o Angular interceptar a rota. Mas se é assim que funciona, vamos em frente :)

Não fiz qualquer alteração em configuração no servidor.

Obrigado pela rápida resposta, Flávio.