Apostila caelum FJ-21 - Criar .jar de arquivos tag-files

13 respostas
D

Estive lendo a nova apostila da caelum http://downloads.caelum.com.br/apostila/caelum-java-web-fj21.pdf, e vi sobre tag-files. E eu gostaria de estar criando umas tags específicas, uma delas é o de data conforme esta no exemplo da apostila.

Eu quero criar um .jar dessas tags para estar compartilhando entre projetos.

Como eu faria isso no eclipse?
Já vi varios tutoriais para criar o .jar, mais quando eu coloco o .jar em lib de meu projeto ele nunca encontra o descriptor.

13 Respostas

G

Não lí a apostila, mas fiquei em dúvida se você quer uma taglib normal em classe Java ou aquelas taglibs baseadas em JSP/JSPX?

No caso da primeira basta você fazer suas classes Java e seus .tlds, colocar esses tlds dentro do META-INF do seu jar e pronto. Quando o container subir ele irá ler esses tlds e automaticamente carregará as taglibs, nem precisa declarar no web.xml.

No segundo caso a taglib é na verdade um arquivo .jsp ou .jspx com a extensão .tag ou .tagx respectivamente. Essas eu não vejo como estarem dentro de um jar, já que não são classes Java, resources e nem mesmo descriptors.

Abraços

D

É a segunda opção que você citou Garcia, mais nesse caso eu iria usa-las em mais de um projeto, então caso eu tiver que fazer alguma alteração eu somente substituo o .jar e boa, agora se eu for usar as tags normais, quando tiver alteração terei que passar em cada projeto para alterar.

Eu li em alguns sites que tem como criar um .jar dessas tags, nesse caso teria que criar o descriptor, mais eu não consegui criar esse .jar.

G

Dei uma olhada na documentação do JEE 1.4 (foi o primeiro que veio no google) e achei como fazer isso. Basta você colocar seu .tag ou .tagx dentro do META-INF/tags do seu jar.

http://java.sun.com/j2ee/1.4/docs/tutorial/doc/JSPTags5.html

D

Deu certo, estava confundindo as extensões dos arquivos, estava criando um arquivo com a extensão .tdl, que o elipse gera, onde na verdade seria um arquivo com a extensão .tld, essa extensão de arquivo não achei para o eclipse gerar, então cliquei com botão direito no projeto New > File, criei o arquivo com a extensão que eu queria, dai o eclipse reconheceu.
Não sei se tem outra forma de criar esse arquivo, sei que dessa forma deu certo.

Pra criar o .jar, eu criei um Dynamic Web Project, dentro da pasta WEB-INF, criei uma pasta tags, ainda em WEB-INF, criei o arquivo com a extensão tag-files.tld, onde tag-files, pode ser substituido com qualquer-coisa.tld.

Dentro da pasta WEB-INF/tags, joguei as tags que eu criei, e mapeei essas tags no arquivo tag-files.tld.
Feito isso export no projeto, e gerar o jar.

Feito, tudo pronto para o uso.

D

Alias quero parabenizar a equipe da Caelum, a apostila esta show de bola.

G

davisnog, quando você usa as tags com a extensão .tag ou .tagx não é preciso o .tld. Arquivos TLD (tag library descriptor) não necessários apenas quando você cria tags em classes java.

D

A minha intenção é criar as tag-files e gerar um .jar dessas tags e disponibilizar em outras aplicações.

G

Pelo que li na documentação basta você ter esses .tag e adicionar dentro do META-INF/tags do seu jar. Não precisa nem mesmo adicionar arquivos .tld. Basta apenas o arquivo da propria tag.

D

Li na documentação que esta no link:
http://java.sun.com/javaee/5/docs/tutorial/doc/bnamu.html#bnana

O que esta acontecendo é de ele não encontrar a uri que eu especifiquei no .tld, estou vendo como resolver isso.

D

Estou tendo um problema quanto a uri que tenho que colocar no .tld, eu tinha colocado uma uri qualquer como “http://www.tags.com/tag-files”, só que dessa forma me da um erro de

cannot be resolved in either web.xml or the jar files deployed with this application
, pesquisando na web, vi que era só declarar a taglib no web.xml, mais quando eu vou fazer isso usando o eclipse na lista de tags do web.xml não me aparece a de tag-lib.
Tentei usar na uri somente “tagfiles”, mais dessa forma esta sendo procurado as tags no diretorio atual da pagina gerando o erro
File “/WEB-INF/jsp/home/tagfiles” not found
.
Onde era para estar sendo procurado o jar em lib.

Alguma dica?

G

davisnog, pelo que lí na documentação do JEE 1.4 basta você colocar o seu .tag ou .tagx dentro do META-INF/tags do seu jar e tudo funciona sem arquivo tld. Eu não consegui achar esse trecho na especificação do JEE 5.

Mas faça um teste. Eu uso bastante essas .tag porém na própria aplicação, e não dentro de um jar. Faça esse teste criando uma tag qualquer e colocando dentro do META-INF/tags para ver se funciona.

D

eu fiz o teste “<%@ taglib prefix=“t” tagdir=”/WEB-INF/lib/tag-files"%>
", mais no eclipse da esse erro:

Can not find the tag library descriptor for “/WEB-INF/lib/tag-files”. Try using a newer
grammar or declared version in the Web Deployment Descriptor.

onde o nome do meu .jar é tag-files.

D

alguma outra dica de como estar compartilhando arquivos em comum entre aplicações, como por exemplo tag-files e .js?

Criado 16 de fevereiro de 2010
Ultima resposta 18 de fev. de 2010
Respostas 13
Participantes 2