GoConqr has a new look! Let us know what you think.

Notes

Custom Tags

Luis Felipe Guariento Desenvolvimento de Software Concursos Públicos Portuguese 13 pages

Content of the notes (13)

Page 1

Agenda

Aqui discutiremos:

Custom Tags.

O descritor de Tag Library e seus elementos.

Mapeamento entre TLD (Tag Library Descriptor) e o arquivo JSP.

Exemplo de um arquivo TLD e sua localização

Page 2

Custom Tags

Nós talvez necessitemos usar uma custom tag que não é parte do JSTL.

Page 3

TLD

Há três conceitos associados com custom tags:

TLD ( Tag Library Descriptor ).

Como usar a tag na página JSP.

O Tratador de tags ( Tag Handler )

É importante olhar o TLD de modo que se possa saber como a tag pode ser usada.

Page 4

Exemplo de TLD

Abaixo temos um exemplo de um arquivo TLD:

< uri >: refere-se a um nome único que será usado mais tarde na página JSP.

Tags obrigatórias: < tlib-version >, < short-name > e < uri >

Custom Tags

Page 5

Exemplo de TLD (2)

Tags obrigatórias: < name >< tag-class > e < body-content >

Opcional: < description >

Custom Tags

Page 6

Explicação da TLD

As tags < tlib-version >, < short-name > e < uri > são obrigatórias.

A tag < uri > é o termo usado na diretiva taglib declarada na página JSP, não é uma localização, apenas um nome.

Dois arquivos *.tld na mesma aplicação web e com o mesmo valor para a tag < uri > não são permitidos.

< name >, < tag-class > e < body-content > são tags obrigatórias.

< name > será utilizado para chamar a tag na página JSP ( no nosso exemplo, 'car' é o nome que usaremos na JSP ).

< tag-class > é o tratador de tag ( tag handler ) o qual o container chamará para tratar a tag.

Para o elemento < tag >:

Os dois subelementos< name > e < tag-class > são obrigatórios e devem aparecer exatamente uma vez. Podem aparecer zero ou mais elementos < variable > e < attribute >. Todos os outros elementos serão opcionais podendo aparecer no máximo uma vez.

Page 7

< attribute >

< body-content > estabelece que tipo de conteúdo o corpo da tag deve ter ( empty, scriptless, JSP, tag-dependant ).

O elemento < attribute > define os atributos da tag.

O elemento < attribute > pode aparecer zero ou mais vezes por elemento < tag >.

'name' especifica o nome do atributo.

'required' estabelece se o atributo é obrigatório na tag ou não.

'rtexprvalue' é 'run time expression value' o qual estabelece se o atributo aceita ou não valores em tempo de execução.

Page 8

Arquivo TLD mapeado para o arquivo JSP

Abaixo vemos o mapeamento entre o arquivo TLD e o arquivo JSP.

Custom Tags

Page 9

< jsp:attribute >

Caso não aja tag < rtexprvalue >, então o padrão é false, ou seja, apenas aceita String literal e não valores avaliados em tempo de execução.

A tag < jsp:attribute > é uma nova action padrão que pode ser utilizada para declarar atributos no corpo da tag mesmo quando o elemento < body-content > tiver um valor de empty.

Page 10

< jsp:attribute > (2)

O elemento jsp:attribute é o único elemento que pode ser declarado no corpo de uma tag mesmo quando for criada vazia.

Custom Tags

Page 11

< body-content >

O elemento < body-content > pode ter um valor:

empty ( a tag não deve possuir um corpo ).

scriptless ( a tag não permite scriptlets, declarations, expressions mas permite EL, template text, custom e standard actions ).

JSP ( todo conteúdo JSP é permitido )

tagdependant ( EL e tags / actions não serão avaliados ).

O container procurará por TLD's em locais apropriados.

Page 12

Localização de TLD's

É necessário armazenar TLD's em um desses quatro locais:

Dentro de WEB-INF

Dentro de algum subdiretório de WEB-INF

Dentro de WEB-INF/lib/JAR/META-INF

Dentro de qualquer subdiretório de WEB-INF/lib/JAR/META-INF

Page 13

Concluindo

Aprendemos como criar TLDs.

Discutimos os detalhes de uma TLD e sua localização.

Information

Description
Concursos Públicos Desenvolvimento de Software (OCEJWCD 6 ONLINE COURSE) Note on Custom Tags, created by Luis Felipe Guariento on 08/03/2018.
Created by
Luis Felipe Guariento · Mar 2018
Updated
Mar 14, 2018
Views
1
Rating

Feedback

What is it about?

What do you think of the new look?

How do you like it?