GoConqr hat ein neues Design! Sag uns, wie es dir gefällt.

Notizen

Classic Tags

Luis Felipe Guariento Desenvolvimento de Software Concursos Públicos Portugiesisch 14 Seiten

Classic Tags

Inhalt der Notizen (14)

Seite 1

Agenda

Aqui discutiremos:

As classes TagSupport e BodyTagSupport.

Tags aninhadas.

Um programa simples que demonstra os métodos da classe TagSupport.

A semântica do modelo de eventos das tags customizadas clássicas e cada método de evento:

doStartTag()

doAfterBody()

doEndTag()

Explicaremos o que o valor retornado por cada método de evento significa.

Seite 2

Classic Tag API

Aqui vemos a API das tags denominadas Classic Tags.

Classic Tags

Classic Tags

Seite 3

Classic Tags - TagSupport

A classe tratadora de tags (Tag Handler) para criação de uma Classic Tag pode estender a classe TagSupport.

Essa classe tratadora deve então sobrescrever um ou todos os três métodos da classe TagSupport que são doStartTag(), doEndTag() e doAfterBody().

Teremos então que retornar um dos valores para o método apropriado.

Seite 4

Valores retornados pelos métodos de TagSupport

Aqui vemos os valores de retorno de cada um dos métodos da classe TagSupport.

Classic Tags

Seite 5

Classic Tags

Os valores retornados determinam o que o container deve fazer a seguir.

O TLD será declarado como se estivesse avaliando Simple Tags.

O motor JSP chamará as Classic Tags.

Seite 6

Avaliação do Corpo da tag - Body Evaluation

Em Tags Clássicas o corpo é sempre avaliado após doStartTag() e antes de doEndTag().

O valor de retorno de doStartTag() deve ser EVAL_BODY_INCLUDE caso o corpo da tag tenha que ser avaliado.

Seite 7

doAfterBody()

os métodos doStart() e doEndTag() serão chamados somente uma vez.

Se o corpo da tag necessitar ser reavaliado constantemente, o método doAfterBody() será utilizado e o valor EVAL_BODY_AGAIN será retornado.

Para "pular" a avaliação do corpo da tag após doStartTag(), o método doAfterBody() deve retornar SKIP_BODY em sua primeira iteração.

O container reutiliza os manipuladores de Classic Tags ( "Classic Tag Handlers" ).

Seite 8

NewTagHandler.java

Aqui temos uma classe que estende a classe TagSupport, ilustrando a sobrescrita de seus métodos (doStartTag(), doEndTag() e doAfterBody()).

A classe será portanto uma manipuladora de tags.

Importamos um novo pacote aqui: javax.servlet.jsp.tagext.*

O método doStartTag() será executado somente uma vez e imprimirá a mensagem "From START TAG".

Ao final do processamento da tag, o método doEndTag() também será processado somente uma vez e ao final do processamento da tag, imprimindo a mensagem "From END TAG".

Após o corpo da tag ser avaliado uma vez (através da chamada a doStartTag(), o qual retornará EVAL_BODY_INCLUDE), o método doAfterBody() será avaliado mais três vezes. Portanto, nós veremos a mensagem dentro do corpo da tag quatro vezes.

Classic Tags

Seite 9

classictag.jsp

Abaixo vemos o conteúdo do arquivo JSP classictag.jsp

Aqui mostramos a chamada ao novo manipulador de tag criado no slide anterior.

Classic Tags

Seite 10

newtag.tld

Aqui vemos o arquivo *.tld

E logo abaixo temos a saída do programa...

Vemos a mensagem "From START TAG" sendo impressa uma única vez e a mensagem encontrada no interior da tag < whizlabs:NewTagHandler > na página classictag.jsp sendo impressa quatro vezes (uma vez quando o método doStartTag() do manipulador de tag retorna EVAL_BODY_INCLUDE e mais três vezes pois o método doAfterBody() retornará EVAL_BODY_AGAIN três vezes segundo o código definido no manipulador de tag NewTagHandler).

Após a sequência de chamadas a doAfterBody(), o método doEndTag(), assim como o método doStartTag(), será chamado somente uma vez, imprimindo "From END TAG" na saída da página.

Classic Tags

Classic Tags

Seite 11

Class BodyTagSupport

A classe BodyTagSupport dá acesso ao conteúdo do corpo da tag.

Há dois novos métodos definidos nessa classe para manipular o corpo da tag: setBodyContent() e doInitBody().

doStartTag() deve retornar EVAL_BODY_BUFFERED de modo a chamar esses métodos.

Seite 12

Tags aninhadas

Caso uma tag esteja aninhada dentro de outra, a tag "pai" pode ser chamada através do método getParent().

Classic Tags

Então, a tag "pai" pode ser acessada por Simple Tags e Classic Tags pelo seguinte código:

ParentTag parent = (ParentTag) getParent();

A chamada ao método getParent() em Tag ( a qual é uma das interface que Classic Tag implementa ), retorna Tag.

A chamada ao método getParent() em SimpleTag retornará JspTag.

Seite 13

Ancestor Tag

Classic Tags podem acessar seus ancestrais sendo esses também Classic Tags.

Simple Tags podem acessar ambos os tipos ancestrais sejam eles Classic ou também Simple Tags.

Para obter um ancestral de uma Tag que não é seu avô, utilizamos o método:

Classic Tags

Em que:

this -> por que Tag iniciamos a busca.

ancestortag.class -> a tag que nós buscamos, estando essa tag acima da que procuramos (ancestral de this).

Seite 14

Conclusão

Vimos nessa apresentação:

Discutimos sobre Classic Tags, Nested Tags (tags aninhadas) e Ancestor Tags (Tags ancestrais)

As classes para customizar tags clássicas que são TagSupport e BodyTagSupport.

Tags aninhadas.

Escrevemos um programinha simples ilustrando esses conceitos.

Informationen

Beschreibung
Concursos Públicos Desenvolvimento de Software (OCEJWCD 6 ONLINE COURSE) Notiz am Classic Tags, erstellt von Luis Felipe Guariento am 09/03/2018.
Aufrufe
2
Bewertung

Feedback

Worum geht es?

Wie gefällt dir das neue Design?

Dein Eindruck