Tag jsp com subelementos

Bom dia,
sou novato em jsp e estou precisando criar uma tag jsp personalizada com subelementos, procurei no google mas o material que encontrei estava confuso, alguem pode me dar uma luz?

ex:
<minhataglib: pagina>

<minhataglib: barraDeFerramentas>
   <minhataglib: botao1/>
   <minhataglib: botao2/>
</minhataglib: barraDeFerramentas>

</minhataglib: pagina>

Você precisa de um arquivo tag lib descriptor (o famoso tld) e uma classe que corresponda a cada tag que colocar lá.
Ah, existe material na web. Aliás. qual a tua dúvida? Onde fica confuso.

Eu preciso obter os dados das subtags na tag pai

drsmachado, não é mais necessário criar um arquivo tld…

Canembawer, não entedi a parte que você quer que a tag pai obtenha dados da filha, até onde sei, isto não é possível…
ou sua dúvida é como criar tags que aceitam elementos dentro, como é o caso do seu exemplo <minhataglib: barraDeFerramentas> e </minhataglib: barraDeFerramentas>?

Se sua dúvida for esta, a sua tag deve ficar mais ou menos assim:

<%@tag language="java" pageEncoding="UTF-8"%>
<%@taglib prefix="minhataglib" tagdir="/WEB-INF/tags"%>

<jsp:doBody var="content" />

<div class="barra-ferramentas" >

       ${content}

</div>

onde a váriavel content irá receber todo o conteúdo que estiver entre a abertura e fechamento da sua tag.
E a div que coloquei foi apenas para exemplificar, a váriavel content você coloca onde quiser!

Só pra lembrar… esse seu arquivo deve ter extensão .tag e deve estar localizado na em uma pasta chamada tags dentro do WEB-INF.

[quote=flaviochess]drsmachado, não é mais necessário criar um arquivo tld…

Canembawer, não entedi a parte que você quer que a tag pai obtenha dados da filha, até onde sei, isto não é possível…
ou sua dúvida é como criar tags que aceitam elementos dentro, como é o caso do seu exemplo <minhataglib: barraDeFerramentas> e </minhataglib: barraDeFerramentas>?

Se sua dúvida for esta, a sua tag deve ficar mais ou menos assim:

<%@tag language="java" pageEncoding="UTF-8"%>
<%@taglib prefix="minhataglib" tagdir="/WEB-INF/tags"%>

<jsp:doBody var="content" />

<div class="barra-ferramentas" >

       ${content}

</div>

onde a váriavel content irá receber todo o conteúdo que estiver entre a abertura e fechamento da sua tag.
E a div que coloquei foi apenas para exemplificar, a váriavel content você coloca onde quiser!

Só pra lembrar… esse seu arquivo deve ter extensão .tag e deve estar localizado na em uma pasta chamada tags dentro do WEB-INF.[/quote]
Flavio, você está equivocado.
Criar tags é possível, agora, para criar componentes, como os utilizados em JSF, por exemplo, você precisa dos TLDs.
Além disso, precisa de uma classe que irá responder por cada uma das tags geradas. São as TLDs que fazem o “meio de campo” entre uma tag e a classe que a representa e, para cada tipo de tag que se deseja, existe uma estrutura existente a ser explorada.
Tem um vasto material sobre isto na net, o problema é que nosso camarada sequer sabe o que quer fazer exatamente, aí fica impossível pesquisar.

drsmachado, na questão de nosso amigo não ter expressado a sua pergunta da maneira correta, concordo plenamente! :smiley:

mas não entendi… estou equivocado na questão que eu disse que:

ou na parte que eu disse:

se meu equivoco está na criação do arquivo tld, a partir do JSP 2.0 não é necessário criar ele mesmo, bastando um arquivo .tag dentro do diretório WEB-INF/tags, como comentei. Eu mesmo possuo umas 10 tags nesse formato (sem arquivos tld) e funcionam perfeitamente, e mais incluindo lógica nas tags.

E como ele disse apenas JSP e que ainda é iniciante, descartei qualquer possibilidade de estar se referindo a JSF. :wink: