Facelets e Tiles

Amigos,

Eu já vi por aí e inclusive alguns posts aqui dizendo que: “utilize Facelets ao invés de Tiles”. Eu acho a idéia ótima até pq Facelets foi feito para JSF, mas lendo os artigos e docs me parece que Facelets no que diz respeito a layout manager não é tão poderoso quanto tiles.

Vou dar um exemplo: Com tiles consigo setar um controller que quando chamado a definição automaticamente a classe é chamada e posso fazer N processos antes da página carregar, além de herança…etc…etc…

Queria saber o que vocês acham do que eu disse, se estou errado.
O que vc´s acham da mistura JSF 1.2 + Facelets 1.1 + Tiles?

[]s

[quote=prog]Amigos,

Eu já vi por aí e inclusive alguns posts aqui dizendo que: “utilize Facelets ao invés de Tiles”. Eu acho a idéia ótima até pq Facelets foi feito para JSF, mas lendo os artigos e docs me parece que Facelets no que diz respeito a layout manager não é tão poderoso quanto tiles.

Vou dar um exemplo: Com tiles consigo setar um controller que quando chamado a definição automaticamente a classe é chamada e posso fazer N processos antes da página carregar, além de herança…etc…etc…

Queria saber o que vocês acham do que eu disse, se estou errado.
O que vc´s acham da mistura JSF 1.2 + Facelets 1.1 + Tiles?

[]s[/quote]

Depende mto do q vc planeja fazer, seus conhecimentos e o seu objetivo.

Você pode “setar um controler” no tiles? Tem certeza? Como é que você faz isso?

Você pode “setar um controler” no tiles? Tem certeza? Como é que você faz isso?[/quote]

Então Maurício, tenho certeza sim, inclusive eu já uso.

[code] <definition name=“minha_definicao” path="/templates/p1.jsp"
extends="algo"
controllerClass=“com.meu.pacote.controller.MyController”>

&lt;put name="content" value="/templates/content.jsp" /&gt;
	
&lt;/definition&gt;[/code]

Quando a definição “minha_definicao” for chamada a classe MyController será executada, aí eu posso fazer muitas coisas, inclusive determinar dinamicamente o conteúdo que irá ser carregado nos blocos…enfim, me parece um gerenciador bem completo…é o que não vejo hj em relação ao Facelets… :?

[quote=Heero Yuy][quote=prog]Amigos,

Eu já vi por aí e inclusive alguns posts aqui dizendo que: “utilize Facelets ao invés de Tiles”. Eu acho a idéia ótima até pq Facelets foi feito para JSF, mas lendo os artigos e docs me parece que Facelets no que diz respeito a layout manager não é tão poderoso quanto tiles.

Vou dar um exemplo: Com tiles consigo setar um controller que quando chamado a definição automaticamente a classe é chamada e posso fazer N processos antes da página carregar, além de herança…etc…etc…

Queria saber o que vocês acham do que eu disse, se estou errado.
O que vc´s acham da mistura JSF 1.2 + Facelets 1.1 + Tiles?

[]s[/quote]
Depende mto do q vc planeja fazer, seus conhecimentos e o seu objetivo.
[/quote]

Heero Yuy,

Desculpe, não entendi sua colocação…o que vc acha de Facelets versus Tiles?? Como assim depende d q eu planejo? Dependendo do projeto vc usaria tiles? Não entendi :?:

Pois é, não sabia que dava pra fazer isso não, e com Facelets até daria pra fazer o mesmo, só seria meio complicado de se fazer.

Apesar disso Maurício, vi que Facelets tem diversas vantagens, então queria usar Tiles + JSF + Facelets, vc acha que seria uma união boa?

Rapaz, eu acho que seria complicação demais pra uma coisa simples. Ainda não consegui visualizar um uso real pra esse controler do Tiles que não devesse ser feito pela própria aplicação.

E outra coisa, acho que o Facelets não é compatível com o Tiles.

tiles + jsf = furada!
todos os projetos que conheço que começaram a usar esta combinação tiveram problemas (Tiles é preso demais no struts, agora que estão separando as coisas) …

outra coisa, Facelets é basicamente uma engine de templates para JSF, ou seja, é só isto que ele faz, templates …

o tiles não faz templates, ele faz composição de páginas …
o efeito final pode ser o mesmo, mas a forma de fazer é completamente diferente :smiley:

Apenas uma curiosidade com relação ao Tiles:

teria como utilizar um template SEM que para isso eu tenha que chamar uma Action do Struts? Por exemplo, em jsp?

[quote=kissdemon]Apenas uma curiosidade com relação ao Tiles:

teria como utilizar um template SEM que para isso eu tenha que chamar uma Action do Struts? Por exemplo, em jsp?

[/quote]

Tem, o Tiles não é preso de forma alguma ao Struts já faz tempo.

Imagina que dependendo da página que você vai carregar, você deseja trazer algumas informações de banco de dados. Não seria legal no momento que a definição fosse chamada, o controlador seria chamado, verificaria “qual é a página chamada” e em seguida carregaria os dados e colocasse no request, aí a página só buscaria as informações. Você pode ter 1000000 páginas e vc não replica nada de layout, pode até chegar ao extremo de nem replicar chamada de CSS :).

Este é um exemplo simples onde este controller poderia entrar.

Veja bem, se JSF pode se unir com Tiles, Facelets não teria nenhum problema quanto a isso.

Aí que esta o ponto, se eu tiver opção melhor, concordo com vc, seria complicar d mais.

[]s

[quote=prog]
Imagina que dependendo da página que você vai carregar, você deseja trazer algumas informações de banco de dados. Não seria legal no momento que a definição fosse chamada, o controlador seria chamado, verificaria “qual é a página chamada” e em seguida carregaria os dados e colocasse no request, aí a página só buscaria as informações. Você pode ter 1000000 páginas e vc não replica nada de layout, pode até chegar ao extremo de nem replicar chamada de CSS :). [/quote]

Em JSF isso não aconteceria pelo simples fato de não haverem controlers como nos frameworks action comuns, a página apenas indicaria que vai usr uma propriedade X de algum ManagedBean, e é o ManagedBean que vai fazer essa busca, não um controller do template.

E essa solução do Tiler ter um controler é uma gambiarra terrível, a view não tem que executar nada, nem saber quem é que vai usar ela, ela tem que simplesmente mostrar as informações que foram enviadas.

Nem tudo que é compatível com JSF é compatível com o Facelets. O Facelets é uma engine templates pra JSF e ela tanto oferece novas funcionalidades como ela também remove outras. Para que um projeto seja compatível com o Facelets ele precisa ter uma descrição especial no formato do Facelets.

[quote=urubatan]tiles + jsf = furada!
todos os projetos que conheço que começaram a usar esta combinação tiveram problemas

outra coisa, Facelets é basicamente uma engine de templates para JSF, ou seja, é só isto que ele faz, templates …

o tiles não faz templates, ele faz composição de páginas …
o efeito final pode ser o mesmo, mas a forma de fazer é completamente diferente :D[/quote]

urubatan, to ligado que vc é “o cara do JSF”…rsrs mas vc não acha que esta sendo radical de mais? Você disse que todos os projetos que vc viu com a combinação tiveram problemas, você pode dar algum exemplo de problema?

Não concordo, faz muito tempo que são distintos, eu consegui (acho) isolar totalmente o struts da da minha app, usando apenas os tiles. De qual ligação que você fala, dizendo em termos de código?

Me diga uma coisa, com sua experiência, você acha que hj usar Facelets é tão produtivo quanto usar Tiles?

Ah, não estou aqui defendendo Tiles, só quero mesmo saber se estou enganado em pensar que Tiles é uma solução ainda definitiva para layout manager…

[]s

[quote=Maurício Linhares][quote=prog]
Imagina que dependendo da página que você vai carregar, você deseja trazer algumas informações de banco de dados. Não seria legal no momento que a definição fosse chamada, o controlador seria chamado, verificaria “qual é a página chamada” e em seguida carregaria os dados e colocasse no request, aí a página só buscaria as informações. Você pode ter 1000000 páginas e vc não replica nada de layout, pode até chegar ao extremo de nem replicar chamada de CSS :). [/quote]

Em JSF isso não aconteceria pelo simples fato de não haverem controlers como nos frameworks action comuns, a página apenas indicaria que vai usr uma propriedade X de algum ManagedBean, e é o ManagedBean que vai fazer essa busca, não um controller do template.

E essa solução do Tiler ter um controler é uma gambiarra terrível, a view não tem que executar nada, nem saber quem é que vai usar ela, ela tem que simplesmente mostrar as informações que foram enviadas.

Nem tudo que é compatível com JSF é compatível com o Facelets. O Facelets é uma engine templates pra JSF e ela tanto oferece novas funcionalidades como ela também remove outras. Para que um projeto seja compatível com o Facelets ele precisa ter uma descrição especial no formato do Facelets.[/quote]

Maurício, vou dar um exemplo meio zuado pra vc entender o que eu disse. Vamos supor que você tenha 100 páginas, só que cada página vc teria que carregar alguns Headers extra, determinar se a página vai mostrar um botão de imprimir ou não…etc…etc. Nesse controlador que eu disse seria fácil fazer isso, pq o mesmo poderia carregar e prepar essa informação para a página. Detalhe mesmo tendo 100 páginas eu vou escrever esse código UMA única vez.

Como Facelets pelo que eu vi não tem como fazer nada dinâmico…

[quote=Maurício Linhares][quote=kissdemon]Apenas uma curiosidade com relação ao Tiles:

teria como utilizar um template SEM que para isso eu tenha que chamar uma Action do Struts? Por exemplo, em jsp?

[/quote]

Tem, o Tiles não é preso de forma alguma ao Struts já faz tempo.[/quote]
Bom saber. Nunca usei a fundo o Tiles, o SiteMesh sempre deu conta quando precisei. Quem sabe comece a usar o Tiles.

[quote=prog]Maurício, vou dar um exemplo meio zuado pra vc entender o que eu disse. Vamos supor que você tenha 100 páginas, só que cada página vc teria que carregar alguns Headers extra, determinar se a página vai mostrar um botão de imprimir ou não…etc…etc. Nesse controlador que eu disse seria fácil fazer isso, pq o mesmo poderia carregar e prepar essa informação para a página. Detalhe mesmo tendo 100 páginas eu vou escrever esse código UMA única vez.

Como Facelets pelo que eu vi não tem como fazer nada dinâmico…[/quote]

Ainda estou sem entender :stuck_out_tongue:

Fazer algo dinâmico é não mostrar alguma coisa? Isso é simples de se fazer, é só ter uma expressão lá no “rendered” que avalie pra true ou para false.

Usando facelets você pode fazer ifs, switches, repetições, não vejo como isso não poderia ser feito.

É que é assim Maurício, o controlador de tiles mais funciona como um “handler”, toda vez que tal definição for chamada este “handler” é chamado e isso facilita muito, o que deu pra ver é que Faceles não tem algo igual, talvez tenha alterantivas, tenho q pesquisar melhor facelets pra ver se encontro algo que não saiba ainda.

Mas valeu pela ajuda e paciência!

[]s