O ciclo dos métodos (doStartTag(), doAfterBody() e doEndTag() de uma Classic Tag

Este post ilustra a ordem em que os métodos (doStartTag(), doAfterBody() e doEndTag() são chamados para tags aninhadas (nested tags) do tipo clássico (Classic Tags).

TLD file:

<tag>

<description></description>

<name>child</name>

<tag-class>com.pedroabs.mytags.OrderMethodsClassicTag</tag-class>

<body-content>scriptless</body-content>

<attribute>

<name>itemValue</name>

<required>true</required>

<rtexprvalue>true</rtexprvalue>

</attribute>

</tag>

TagHandler:

package com.pedroabs.mytags;

import javax.servlet.jsp.JspException;

import javax.servlet.jsp.JspWriter;

import javax.servlet.jsp.tagext.TagSupport;

import java.io.IOException;

import java.util.List;

import java.util.ArrayList;

public class OrderMethodsClassicTag extends TagSupport{

private String itemValue;

public void setItemValue(String value){

this.itemValue = value;

}

public int doStartTag() throws JspException {

try {

pageContext.getOut().println(this + ” – doStartTag<br>”);

} catch (Exception e) {

e.printStackTrace();

}

return EVAL_BODY_INCLUDE;

}

public int doAfterBody() throws JspException {

try {

pageContext.getOut().println(this + ” – doAfterBody<br>”);

} catch (Exception e) {

e.printStackTrace();

}

return SKIP_BODY;

}

public int doEndTag() throws JspException {

try {

pageContext.getOut().println(this +” – doEndTag<br>”);

} catch (Exception e) {

e.printStackTrace();

}

return EVAL_PAGE;

}

public String toString(){

return this.itemValue;

}

}

JSP:

<pedro:child itemValue=”main”>

<pedro:child itemValue=”sub1″/>

<pedro:child itemValue=”sub2″/>

<pedro:child itemValue=”sub3″>

<pedro:child itemValue=”sub31″/>

<pedro:child itemValue=”sub32″/>

<pedro:child itemValue=”sub33″/>

</pedro:child>

<pedro:child itemValue=”sub4″/>

</pedro:child><br>

Resultado:

main – doStartTag

sub1 – doStartTag

sub1 – doEndTag

sub2 – doStartTag

sub2 – doEndTag

sub3 – doStartTag

sub31 – doStartTag

sub31 – doEndTag

sub32 – doStartTag

sub32 – doEndTag

sub33 – doStartTag

sub33 – doEndTag

sub3 – doAfterBody

sub3 – doEndTag

sub4 – doStartTag

sub4 – doEndTag

main – doAfterBody

main – doEndTag

Anúncios
Esta entrada foi publicada em Servlet & JSP com as etiquetas . ligação permanente.

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão / Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão / Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão / Alterar )

Google+ photo

Está a comentar usando a sua conta Google+ Terminar Sessão / Alterar )

Connecting to %s