Estrategia para pagina dinamica com Facelets + AJAX

4 respostas
B

Olá a todos,

Estou aprendendo a usar ajax com o templating de facelets porem não estou tendo a menor idéia ainda de fazer o que eu quero…
Ja aprendi a usar ajax em formularios… renderizar determinada parte da pagina e tudo mais…(só encontro essas coisas simples nas paginas do google)…
Porem queria uma pagina dinamica estilo gmail, onde a unica parte da pagina que recarrega é o conteudo do meio(div de conteudo) e forneça acesso direto a determinado conteudo pela url…

O que eu não consigo imaginar como fazer é o acesso direto a determinada pagina do sistema… no gmail o link é www.gmail.com/mail/#inbox … apartir desse “#inbox” ele abre a caixa de entrada no conteudo… se eu digitar “#sent” no lugar do “#inbox” ou clicar no botao enviados ele recarrega APENAS o conteudo do site mudando para a pagina de enviados…

Alguem poderia me dar uma luz de como pegar algo da url como esse “#inbox” e carregar o conteudo com essa determinada pagina??? e caso o usuario entre com uma pagina que n existe o site nao mudar???

Abraços, e obrigado.

4 Respostas

marcosharbs

olha no gmail quando você clica em Enviados ele realmente deve fazer uma requisição ajax
mas quando você digita pela url #sent ele da submit sim
até fiz um teste no meu gmail a página é recarregada
so que é rápido mas ela da o submit normal

B

Aaaaa entendi… obrigado pela resposta :slight_smile:

Mas como ele faz controle da pagina que ta no conteudo???Por parametro que ta na url sera???
E como eu poderia fazer para quando eu digitar um parametro no qual não existe pagina correspondente ele nao mudar nadar???

Outra coisa que esta me deixando curioso é esse “#inbox”… o que significa esse “#” na URL???Eu estava pensando em criar um padrao do tipo www.pagina.com/?p=index onde o “p” é o nome da pagina que vai estar dentro da div de conteudo… mas isso da problema se o usuario entrar com uma pagina que n existe :frowning:

E outra duvida minha é se da para mudar a url que esta escrita no navegador do usuario sem dar request… por exemplo: clicar em um botao que carrega algo na div do conteudo e quando clicar no botao a url na navegador tb muda para mostar para o usuario a pagina que ele esta… por exemplo de ?p=index para ?p=cadastro sem recarregar a pagina nem nada…

Não sei se estou conseguindo expressar bem o que estou tentando fazer… se tiver dificil de entender me avisa…

marcosharbs

você consegue implementar um filter
de uma olhada em como se implementa
ai quando o cara fizer uma requisição você consegue
pegar a url e validar e redirecionar para onde você quiser
se estiver usando java server faces dê uma olhada no phase listener também

B

hmmm entendo, no momento eu uso filtro para verificar se o usuario esta logado ou nao, pois as paginas de um certo repositorio soh podem ser acessadas se estiver logado…
Dai nesse mesmo filtro eu poderia verificar se a pagina existe ou nao…

Se existir eu passo a pagina por parametro ?p=pagina.
E na minha pagina em si eu dou um ui:define no conteudo com um <ui:insert src="/…/#{p}.xhtml" sendo esse “p” o parametro passado pela url.
Quando a pessoa clicar em um botao no site para mudar o conteudo eu dou um ui:param quando clicar modificando o parametro e dou um rerender no conteudo que vai utilizar o novo valor da variavel “p”.

Não sei se é a abordagem mais correta, mais acho que é a que eu encontrei que chega mais próximo ao meu propósito…

Agora eu só preciso descobrir se tem como o ajax alterar a url do navegador do usuario sem dar request(alterar a url quando eu clicar em um botao com ajax por exemplo).

Obs: queria saber o que significa o “#” na URL de alguns sites, é alguma tecnologia em especifico???

Criado 10 de agosto de 2011
Ultima resposta 10 de ago. de 2011
Respostas 4
Participantes 2