Pesquisar

sexta-feira, 9 de abril de 2010

URL amigáveis com JavaServer Faces (jsf) 1.X

Uma das críticas dos usuários de JSF é : "você não consegue criar urls que podem ser bookmarked (favoritadas)".

Eu pensei que iria ter uma trabalheira do cão... pensei que não iria dar muito certo com Richfaces, Spring ... enfim todas as integrações... pensei... pensei errado! :)

Há um framework chamado PrettyFaces (para jsf 1.1 , 1.x e 2.0) o qual o uso é extremamente fácil.

Com apenas dois passos você adiciona url amigáveis ao JSF:

1º Passo: Registrar o filtro no web.xml

<filter>
<filter-name>Pretty Filter</filter-name>
<filter-class>com.ocpsoft.pretty.PrettyFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>Pretty Filter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>ERROR</dispatcher>
</filter-mapping>

2º Passo: criar o arquivo pretty-config.xml dentro de WEB-INF:

<pretty-config
xmlns="http://ocpsoft.com/prettyfaces-xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://ocpsoft.com/prettyfaces-xsd
http://ocpsoft.com/xml/ns/prettyfaces/pretty-1.0.xsd">
<url-mapping id="verNoticia">
<pattern>/noticia/#{myBean.currentStoryId}/</pattern>
<view-id>/noticia.xhtml</view-id>
<action>#{myBean.loadComment}</action>
</url-mapping>
</pretty-config>


Com as configurações acima se você digitasse http://seuhost/seuprojeto/noticia/12345/ você mostraria o bean (de ViewID=/noticia.xhtml) com a notícia de id=12345 :)

ps: um passo omitido seria o download do jar e o registro do mesmo no classpath da sua aplicação.

5 comentários:

Webdesigner disse...

Bha tu e o cara.
Valeu pele dica.
Otimização de sites eo futuro
www.lrcasual.com

Unknown disse...

estava a procura dessa solução em JSF!

pelo post!

Unknown disse...

Muito boa a dica, esse pettry face facilitou bastante nossa vida. AInda preciso fazer alguns testes com o keepalive

Unknown disse...

Eu ainda não entendi como o pretty ajuda o google criando a url amigável se o jsf e o conteúdo não consegue ser entendido pelo googlebot poderia explicar melhor?
Muito Obrigado

leandro disse...

Olá Luciano, porque o googlebot não entenderia o jsf 1.X? : ) faz muito tempo que escrevi isso mas me lembro que para o browser a página com tags html e conteúdo era exibida o problema era que essa página não estava sob nenhuma rota (id) especifico, dai por exemplo se o bot fosse em / ele começaria no root mas quando movimentasse para um link o path não mudaria "/" enfim com prettyFaces isso muda.

ps: faz muito tempo mesmo que não mexo com nada disso.