Pages

Subscribe:

Ads 468x60px

segunda-feira, 28 de junho de 2010

JSF - Desenvolvendo componentes personalizados com IceFaces e Facelets - parte 2

Pessoal, promessa é dívida né!
Demorei mto pra postar a segunda parte, tive problemas com trabalho, família e Trabalho de conclusão de curso que tomou todo o meu tempo!

Já temos o JSF 2.0, que simplifica e padroniza a criação de componentes, mas mesmo assim vou falar como fiz aqui, ainda pode ser útil pra muita gente. Então pra não deixa ninguém na mão:


Vamos criar um componente bem simples, bobo mesmo, mas ótimo pra dar uma idéia do que deve ser configurado:
Primeiramento o componente que vamos criar será uma label com um texto:
Ah, mas não implementaremos comportamento, não agora, ela será um caixa estática.
Poderemos utilizar essa caixa onde quisermos no sistema, pra isso bastará fazermos o seguinte:

Pense nas possibilidades! Esse é um exemplo bobo, mas quando implementei minha caixa de pesquisa vi o quanto a criação desse componentes é poderosa!

Primeiro vou mostrar a estrutura de arquivos que vamos precisar:


caixa.xhtml - Esse é o arquivo onde ficará o nosso compontente.
facelets.taglib.xml - Esse arquivo vai definir nossa biblioteca de componentes.
web.xml - Nesse arquivo vamos colocar o parâmetro pra contar pro Facelets onde está a biblioteca de componentes.

Vamos começar pelo web.xml, nele devemos adicionar entre as tags e , o seguinte código:

Parâmetro que determina a localização do descritor das tags dos componentes Facelets
facelets.LIBRARIES
/WEB-INF/facelets/facelets.taglib.xml

Com isso estamos criando um parâmetro de contexto para definir a biblioteca de tagLibs do facelets.


Com isso o Facelets será capaz de saber que o arquivo de biblioteca de componente está na pasta especificada em .

Agora veja a estrutura do arquivo facelets.tablib.xml:

Abaixo descreverei as tags:
- É a tag raiz, que especifica que esse arquivo é uma tablib, dentro dela podemos colocar quantas tags precisarmos.
- É um nome de referência para essa taglig, quando formos usarmos essa taglib em uma página informaremos esse namespace no xmlns.
- Define uma tag, podemos ter quantas tags quisermos.
- O nome que essa tag terá.
- O caminho do arquivo que corresponde à essa tag.


Bom, após criarmos esses dois arquivos nossa aplicação já está apta para usar taglibs, só falta criarmos o próprio componente que corresponderá a tag que queremos.
O código da caixa de pesquisa seria bem simples, isso será feito no arquivo caixa.xhtml que ficará da seguinte forma:

Agora na página que você deseja atilizar seu componente basta fazer a seguinte chamada no xmlns chamando o namespace do seu taglib:


e usar a tag de acordo com o que colocou no xmlns dessa forma, passando os atributos que podem ser utilizados pela tag:
O resultado no navegador é o seguinte:

São grandes as possibilidades para essa solução!
Podemos a partir dela criar componentes complexos com lógica inserida em classes que facilitarão muito o desenvolvimento e a modularização do seu sistema!

Postarei um componente mais complexo, agora que já sabem com criar um simples fica tudo mais fácil!
Até o próximo!


"As pessoas podem duvidar do que você diz, mas elas acreditarão no que você faz. "
[Lewis Cass]


3 comentários:

Anônimo disse...

Parabéns, rápido e pratico, direto ao ponto.

Andrius disse...

Olá meu amigo, muito obrigado pelo post, já ajudou bastante, funcionou direitinho. Gostaria de saber como acrescento um actionListener para o componente, estou tentando fazer isso, mas um problema sempre ocorre, não sei se eu necessito configurar algo.
Muito obrigado

Unknown disse...

Cara, que tipo de ActionListener vc deseja criar?
Está usando algum framework adicionou, tipo IceFaces, RichFaces?
Eu tenho alguns exemplos aqui, estou meio enferrujado em JSF, mas me fala seu problema direitinho que eu tento te ajudar...
[]'s

Postar um comentário