Dúvidas sobre JSF (JavaScer Faces)  XML
Índice dos Fóruns » Desenvolvimento Web
Autor Mensagem
danieldestro
Moderador
[Avatar]

Membro desde: 04/09/2002 17:26:16
Mensagens: 6667
Localização: São Paulo / Catanduva
Offline

Caros,
Estou me aventurando em aprender JSF (JavaScerver Faces) e tenho umas dúvidas pertinentes, que acho que o pessoal mais experiênte na tecnologia pode me responder.

1) Percebi que o mapeamento feito no faces-config.xml refere-se apenas ao mapeamento pelo nome físico do JSP, e não existe um mapeamento lógico, como ocorre no Struts, por exemplo.

Imagine que minha app web tenha uma estrutura de diretórios, onde todos os meus JSPs fiquem dentro da pasta "jsp". Então eu teria que mapeá-los assim:



E referênciar num link como "jsp/pagina.faces". (Servlet do JSF mapeado para "*.faces").

Sendo que no Struts posso mapear logicamente apenas como "pagina.do", mesmo que meu JSP esteja dentro de uma estrutura de diretórios.

Correto?

2) Existe mapeamento lógico?

3) O Struts usa uma abordagem de Action para executar o request, mas no JSF o paradigma é um pouco diferente, ou seja, ele trata eventos e você mapeia os backing beans que vão responder a cada evento disparado na UI. Correto?

Existe ou vocês usam alguma facilidade para trabalhar com esses backing beans? Ou apenas ter esses POJOs é o suficiente para tornar o trabalho produtivo e pouco repetitivo?

Por enquanto é só. Só tenho algumas dúvidas quanto ao JSF, pois pela minha experiência em sistemas e pelo que vi que JSF oferece, em muitos casos podemos chamá-lo de FECES em vez de FACES.

Obrigado!

gotjava?
Doe sangue
What You See Is What You Get!
Apostilas de Java grátis!
RefsCALL - Bandeira Eletrônica para Árbitro de Futebol
[WWW]
keller
GUJ Master
[Avatar]

Membro desde: 12/11/2003 16:24:00
Mensagens: 1817
Localização: Auckland - NZ
Offline

Não sou nenhum expert em JSF mas vou responder o que eu sei..
Se eu estiver errado em algo me corrijam..

danieldestro wrote:
1) Percebi que o mapeamento feito no faces-config.xml refere-se apenas ao mapeamento pelo nome físico do JSP, e não existe um mapeamento lógico, como ocorre no Struts, por exemplo.

Imagine que minha app web tenha uma estrutura de diretórios, onde todos os meus JSPs fiquem dentro da pasta "jsp". Então eu teria que mapeá-los assim:



E referênciar num link como "jsp/pagina.faces". (Servlet do JSF mapeado para "*.faces").

Sendo que no Struts posso mapear logicamente apenas como "pagina.do", mesmo que meu JSP esteja dentro de uma estrutura de diretórios.

Correto?

Acho que sim no JSF "jsp/pagina.faces" é traduzido pra "jsp/pagina.jsp" , se no Struts ocorre de maneira semelhante "jsp/pagina.do" é traduzido pra "jsp/pagina.jsp" entao certo.

danieldestro wrote:
2) Existe mapeamento lógico?

Acho que já é um mapeamento logico apenas mapear "jsp/pagina.jsp" não? Se estou errado entao diga o que quer fazer mais precisamente..

danieldestro wrote:
3) O Struts usa uma abordagem de Action para executar o request, mas no JSF o paradigma é um pouco diferente, ou seja, ele trata eventos e você mapeia os backing beans que vão responder a cada evento disparado na UI. Correto?

Sim no caso #{MeuBean.save} ira executar o metodo save na classe MeuBean com os campos populados pelo JSF. Existem tambem os ActionListener's vale uma olhada..

danieldestro wrote:
Existe ou vocês usam alguma facilidade para trabalhar com esses backing beans? Ou apenas ter esses POJOs é o suficiente para tornar o trabalho produtivo e pouco repetitivo?

Trabalhar com POJOs é facil a unica coisa repetitiva é apertar ALT+SHIFT+S e depois R pra gerar os get/set.

danieldestro wrote:
Por enquanto é só. Só tenho algumas dúvidas quanto ao JSF, pois pela minha experiência em sistemas e pelo que vi que JSF oferece, em muitos casos podemos chamá-lo de FECES em vez de FACES.

Heheheh belo trocadilho mas jsf é bom , nao será sua "silverbullet" mas é bom e simples de se trabalhar , voce consegue criar componentes com uma certa facilidade tambem..

Ah e antes de você sair customizando a dataTable da uma olhada na displaytag.

Guilherme I. Keller (Gui)
Diploma in Web Development and Desktop Publishing
SCJA | SCJP | SCWCD | SCBCD | CSM
"Test it, before it test you."
http://flickr.com/guikeller
[WWW] [MSN]
danieldestro
Moderador
[Avatar]

Membro desde: 04/09/2002 17:26:16
Mensagens: 6667
Localização: São Paulo / Catanduva
Offline

Quando eu disse mapeamento lógico. Imagine isso:

Tenho um JSP fisicamente em: "APP_WEB/jsp/pagina.jsp"

No Struts eu mapeio como "xyz.do".

Pelo que vi, no JSF, sou OBRIGADO a chamar "jsp/pagina.faces", ou seja, o nome refere-se ao nome físico do arquivo (por mais que ele substitua ".faces" por ".jsp").

No Struts o mapeamento é lógico, ou seja, posso mudar o nome ou até adicionar ou suprimir diretórios, criando nomes lógicos.

E no Struts posso usar um único JSP para vários "actions" (mapeamentos)... Não vejo uma forma de fazer isto no JSF.

gotjava?
Doe sangue
What You See Is What You Get!
Apostilas de Java grátis!
RefsCALL - Bandeira Eletrônica para Árbitro de Futebol
[WWW]
danieldestro
Moderador
[Avatar]

Membro desde: 04/09/2002 17:26:16
Mensagens: 6667
Localização: São Paulo / Catanduva
Offline

Outra coisa...

Hoje, se precisamos fazer no sistema algo tipo um JSpinner do Swing, ou seja, uma caixa com botão pra incrementar/decrementar o valor, fazemos com JavaScript.

No JSF, para isso teria de ser criado um novo componente? Pelo que vi, acho que fica mais difícil de interagir JavaScript com o componente na tela.

gotjava?
Doe sangue
What You See Is What You Get!
Apostilas de Java grátis!
RefsCALL - Bandeira Eletrônica para Árbitro de Futebol
[WWW]
Mauricio Linhares
Moderador
[Avatar]

Membro desde: 09/01/2005 23:28:22
Mensagens: 3717
Localização: João Pessoa, Paraíba - Brasil
Offline

danieldestro wrote:No JSF, para isso teria de ser criado um novo componente? Pelo que vi, acho que fica mais difícil de interagir JavaScript com o componente na tela.


Se você fizer direto com JavaScript, vai der dificuldades de integrar isso no JSF, porque ele não mantém estado da mesma forma que uma aplicação web comum mantém. O melhor é fazer o componente mesmo.

Meu blog sobre desenvolvimento | My Last.fm | @mauriciojr

Screencast de Introdução a linguagem Objective-C
[WWW]
Mauricio Linhares
Moderador
[Avatar]

Membro desde: 09/01/2005 23:28:22
Mensagens: 3717
Localização: João Pessoa, Paraíba - Brasil
Offline

danieldestro wrote:No Struts o mapeamento é lógico, ou seja, posso mudar o nome ou até adicionar ou suprimir diretórios, criando nomes lógicos.

E no Struts posso usar um único JSP para vários "actions" (mapeamentos)... Não vejo uma forma de fazer isto no JSF.


Esqueça o Struts, você não está mais desenvolvendo "actions", tente se imaginar desenvolvendo uma aplicação desktop. Você não vai usar JSF corretamente tentando fazer as coisas do jeito que fazia no Struts.

Meu blog sobre desenvolvimento | My Last.fm | @mauriciojr

Screencast de Introdução a linguagem Objective-C
[WWW]
danieldestro
Moderador
[Avatar]

Membro desde: 04/09/2002 17:26:16
Mensagens: 6667
Localização: São Paulo / Catanduva
Offline

Como eu mesmo mencionei, o paradigma é diferente e eu saquei isso. Menciono o Struts como forma de esclarecer o que estou dizendo.

Eu fiz N programas desktop onde eu reaproveito telas básicas... Seja via herança ou via composição. Como isso não rola com JSF, quero saber como posso mapear isso.

E não ter uma mapeamento lógico para JSF me parece algo rudimentar demais.

gotjava?
Doe sangue
What You See Is What You Get!
Apostilas de Java grátis!
RefsCALL - Bandeira Eletrônica para Árbitro de Futebol
[WWW]
Mauricio Linhares
Moderador
[Avatar]

Membro desde: 09/01/2005 23:28:22
Mensagens: 3717
Localização: João Pessoa, Paraíba - Brasil
Offline

danieldestro wrote:Eu fiz N programas desktop onde eu reaproveito telas básicas... Seja via herança ou via composição. Como isso não rola com JSF, quero saber como posso mapear isso.


Se você quer reaproveitar pedaços de tela, você precisa de uma engine de templates, pode fazer isso com Facelets (que oferece até herança de templates)

Meu blog sobre desenvolvimento | My Last.fm | @mauriciojr

Screencast de Introdução a linguagem Objective-C
[WWW]
danieldestro
Moderador
[Avatar]

Membro desde: 04/09/2002 17:26:16
Mensagens: 6667
Localização: São Paulo / Catanduva
Offline

Bom, então pelo jeito eu terei que usar a estrutura física de diretórios na chamada do meu JSF, já que não "existe" um mapeamento lógico. Isso é ruim.

Porém eu poderia alterar o "Request Handler", se não estou errado, para fazer algumas maracutaias por mim, certo? Um amigo disse que o estendeu para usar convenção em vez de configuração XML.

gotjava?
Doe sangue
What You See Is What You Get!
Apostilas de Java grátis!
RefsCALL - Bandeira Eletrônica para Árbitro de Futebol
[WWW]
Mauricio Linhares
Moderador
[Avatar]

Membro desde: 09/01/2005 23:28:22
Mensagens: 3717
Localização: João Pessoa, Paraíba - Brasil
Offline

danieldestro wrote:Porém eu poderia alterar o "Request Handler", se não estou errado, para fazer algumas maracutaias por mim, certo? Um amigo disse que o estendeu para usar convenção em vez de configuração XML.


Claro que pode, os pontos de extensão são vários (o Facelets mesmo usa vários desses), mas, será que vale a pena o trabalho?

Meu blog sobre desenvolvimento | My Last.fm | @mauriciojr

Screencast de Introdução a linguagem Objective-C
[WWW]
keller
GUJ Master
[Avatar]

Membro desde: 12/11/2003 16:24:00
Mensagens: 1817
Localização: Auckland - NZ
Offline

danieldestro wrote:Bom, então pelo jeito eu terei que usar a estrutura física de diretórios na chamada do meu JSF, já que não "existe" um mapeamento lógico. Isso é ruim.

Eu procurei aqui no JSF In Action e no Core Java Server Faces nao vi nada..
Infelizmente o JSF vai ficar devendo nisso..

Boa sorte!

Guilherme I. Keller (Gui)
Diploma in Web Development and Desktop Publishing
SCJA | SCJP | SCWCD | SCBCD | CSM
"Test it, before it test you."
http://flickr.com/guikeller
[WWW] [MSN]
rafaelolian
Entusiasta Java
[Avatar]

Membro desde: 30/04/2007 02:27:41
Mensagens: 20
Offline

Olá,

Também estou começando com JSF e compartilho a indignação do amigo Danieldestro pela falta de mapeamento lógico em JSF pelo seguinte:

1 - Exibir toda minha estrutura de pastas para o usuário no browser

2 - Com mapeamento lógico é possível esconder minhas JSPs dentro de WEB-INF

3 - Se eu possuir um sistema com muitas JSPs e criar uma estrutura de pastas complexa, terei de usar "../../../minhaPasta/meuArquivoReferencia" para includs e referencias a imagens

Eu imagino que deve ter uma solução mais eleganete para isso, vou continuar estudando e escrevo se achar alguma coisa.
[MSN]
fabiolourencetti
Smalltalk

Membro desde: 28/10/2003 13:09:29
Mensagens: 2
Offline

Olá Rafael e Daniel,

Vocês conseguiram achar ou desenvolver alguma solução para esta questão do mapeamento lógico?

Também tenho este mesmo problema.

Uma alternativa seria colocar todos os jsp's no root do contexto ou em uma mesma pasta e fazer a referencia relativa, mas fica ruim em termos de organização de grupos de funcionalidades.

abs,
 
Índice dos Fóruns » Desenvolvimento Web
Ir para:   
Powered by JForum 2.1.8 © JForum Team