Repassando s� pro caso de alguem tb tiver a mesma d�vida ;-)
----- Repassado por RSZ012 Desenvolvimento/Rio/Vale em 07/08/2004 03:20 PM
-----
RSZ012
Desenvolvimento Para: "Luiz Roberto" <[EMAIL
PROTECTED]>
cc:
07/08/2004 02:20 Assunto: Re: [JUG-Petro] D�vida
sobre taglib persiste(Document link: RSZ012
PM Desenvolvimento)
Quando precisar � s� falar ;-)
Luis Henrique "Bulinha"
"Luiz Roberto"
<[EMAIL PROTECTED] Para: <[EMAIL PROTECTED]>
web.com.br> cc:
Assunto: Re: [JUG-Petro]
D�vida sobre taglib persiste
07/08/2004 02:26 PM
Muito obrigado pela for�a. Em meu estudo sobre taglibs isso era a coisa que
eu estava mais empacando.
Luiz Roberto da Costa Gouv�a Jr.
Analista de Sistemas
----- Original Message -----
From: [EMAIL PROTECTED]
To: Luiz Roberto
Sent: Thursday, July 08, 2004 2:13 PM
Subject: Re: [JUG-Petro] D�vida sobre taglib persiste
O que eu vou responder agora � pura dedu��o, principalmente pq eu n�o tive
"saco" de verificar ;-)
Como vc sabe, toda p�gina JSP � convertida em uma servlet que ira gerar
aquele HTML e ser� compilada.
Depois ela � carregada como uma thread, de modo que independente de
quantas
requisi��es o servidor receba, existir� apenas uma �nica instancia da
servlet (a n�o ser que vc configure para funcionar diferente).
As taglibs, quando desta convers�o/compila��o, s�o convertidas em chamadas
as classes que criamos, ou seja, um objeto TagPai � instanciado e seus
m�todos s�o chamados.
Acredito que para se evitar que toda vez que vc chame a p�gina um objeto
novo seja instanciado, (ou seja, mem�ria alocada), ele cria vari�veis de
instancia para cada tag, e como no primeiro e-mail que eu te mandei a
vari�vel era inicializada apenas na sua declara��o, ela ia incrementando
eternamente, pois a instancia da JSP/Servlet s� sera removida da mem�ria
quando o servidor for parado.
Eu havia me esquecido de uma coisa em tags: sempre inicialize as vari�veis
no doStartTag ;)
[]s Bulinha
"Luiz Roberto"
<[EMAIL PROTECTED] Para: <
[EMAIL PROTECTED]>
web.com.br> cc:
Assunto: Re:
[JUG-Petro] D�vida sobre taglib persiste
07/08/2004 10:55 AM
Agora deu certo. Porque dava aquele erro antes? A vari�vel do contador
ficava na mem�ria?
----- Original Message -----
From: <[EMAIL PROTECTED]>
To: "Luiz Roberto" <[EMAIL PROTECTED]>
Sent: Thursday, July 08, 2004 10:44 AM
Subject: Re: [JUG-Petro] D�vida sobre taglib persiste
coloca no doStartTag
contador=0
"Luiz Roberto"
<[EMAIL PROTECTED] Para:
<[EMAIL PROTECTED]>
web.com.br> cc:
Assunto: Re:
[JUG-Petro] D�vida sobre taglib persiste
07/08/2004 10:45 AM
Funcionou certinho. Por�m ainda tem um problema. Quando eu dou refresh na
p�gina ele n�o carrega de novo a seq��ncia de 0 a 3. Ele continua no 4, 5,
6, ...
----- Original Message -----
From: "Luiz Roberto" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Thursday, July 08, 2004 8:44 AM
Subject: ENC: [JUG-Petro] D�vida sobre taglib persiste
>
>
> Atenciosamente,
> ----------------------------------------
> Luiz Roberto
> Analista de Sistemas / Desenvolvedor
>
>
>
> -----Mensagem original-----
> De: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
> Enviada em: quinta-feira, 8 de julho de 2004 08:08
> Para: [EMAIL PROTECTED]
> Assunto: Re: [JUG-Petro] D�vida sobre taglib persiste
>
>
>
> Tenta isso:
>
>
> =========================== tag pai =============================
>
>
> import javax.servlet.http.HttpServletRequest;
> import javax.servlet.jsp.tagext.BodyTagSupport;
>
> public class TagPai extends BodyTagSupport {
>
> private int contador=0;
>
> public int doStartTag() {
>
> return EVAL_BODY_INCLUDE;
> }
>
> public int doAfterBody() {
> contador++;
>
> if (contador>3)
> return SKIP_BODY;
>
> return EVAL_BODY_AGAIN;
> }
>
> public int doEndTag() {
> contador=0;
> return EVAL_PAGE;
> }
>
> public String getContador() {
> return contador;
> }
>
> }
>
> =========================== tag pai =============================
>
>
> =========================== tag filha ===========================
>
>
> import javax.servlet.jsp.JspWriter;
> import javax.servlet.jsp.tagext.TagSupport;
>
> public class TagFilha extends TagSupport {
>
> public int doStartTag() {
> TagPai tagpai = (TagPai) findAncestorWithClass(this,
> TagPai.class);
> if (tagpai==null) return EVAL_BODY_INCLUDE;
> int contador = tagpai.getContador();
>
> JspWriter out = pageContext.getOut();
> try {
> out.print(contador);
> } catch (Exception e) {}
> return EVAL_PAGE;
> }
>
>
>
> }
>
> =========================== tag filha ===========================
>
>
>
> []s Luis Henrique "Bulinha"
>
>
>
>
>
> "Luiz Roberto"
> <[EMAIL PROTECTED] Para:
> "[EMAIL PROTECTED]" <[EMAIL PROTECTED]>
> web.com.br> cc:
> Assunto: [JUG-Petro]
> D�vida sobre taglib persiste
> 07/07/2004 04:30 PM
> Responder a
> jug-petropolis
>
>
>
>
> Ainda continuo com meu estudo em taglib e aparecem algumas d�vida. Vou
> postar aqui um c�digo simples que exibe 3 vezes o n�mero 1 ao inv�s de
> fazer o que eu queria que era aparecer 1, 2 e 3 em cada linha. Por�m
quando
> eu dou refresh(atualizar) no navegador ele incrementa o valor que est�
> aparecendo no momento. Por exemplo: quando carrego a p�gina ele mostra 3
> vezes o n�mero 1, quando eu dou refresh aparece 3 vezes o n�mero 2. O
que
> estou errando?
>
> ===> pai.java
>
> mport java.io.IOException;
>
> import javax.servlet.jsp.JspException;
> import javax.servlet.jsp.JspWriter;
> import javax.servlet.jsp.tagext.BodyContent;
> import javax.servlet.jsp.tagext.BodyTagSupport;
>
> public class pai extends BodyTagSupport {
>
> private int i = 0;
>
> public int doStartTag()
> {
> return EVAL_PAGE;
> }
>
> public int getI()
> {
> i = i + 1;
> return i;
> }
>
> public int doAfterBody() throws JspException
> {
> BodyContent bc = getBodyContent();
> String s = bc.getString();
> JspWriter out = bc.getEnclosingWriter();
>
> try {
> for(int j = 0; j < 3; j++) {
> out.print(s);
> }
> } catch (IOException e) {
> // TODO Auto-generated catch block
> e.printStackTrace();
> }
>
> return SKIP_BODY;
> }
>
> }
>
> ===> filho.java
>
> import java.io.IOException;
>
> import javax.servlet.jsp.JspWriter;
> import javax.servlet.jsp.tagext.BodyTagSupport;
>
> public class filho extends BodyTagSupport {
>
> public int doStartTag()
> {
> JspWriter out = pageContext.getOut();
> pai papa = (pai)findAncestorWithClass(this, pai.class);
> try {
> out.print(papa.getI());
> } catch (IOException e) {
> // TODO Auto-generated catch block
> e.printStackTrace();
> }
> return SKIP_BODY;
> }
>
> }
>
> ===> teste.jsp
>
> < %@ taglib uri="/iterate" prefix="it"% >
> < it:pai >
> < table border=10 >< tr >< td >
> < it:filho/ >
> < /td >< /tr >< /table >
> < /it:pai >
>
>
>
>
> Y
> a
> h
> o
> o
> !
> G
> r
> o
> u
> p
> s
> S
> p
> o
> n
> s
> o
> r
>
>
>
> A
> D
> V
> E
> R
> T
> I
> S
> E
> M
> E
> N
> T
>
>
>
>
>
>
>
>
> Yahoo! Groups Links
> To visit your group on the web, go to:
> http://groups.yahoo.com/group/jug-petropolis/
>
> To unsubscribe from this group, send an email to:
> [EMAIL PROTECTED]
>
> Your use of Yahoo! Groups is subject to the Yahoo! Terms of
Service.
>
>
>
>
>
>
>
> Yahoo! Groups Links
>
>
>
>
>
>
>
------------------------ Yahoo! Groups Sponsor --------------------~-->
Yahoo! Domains - Claim yours for only $14.70
http://us.click.yahoo.com/Z1wmxD/DREIAA/yQLSAA/5cFolB/TM
--------------------------------------------------------------------~->
Yahoo! Groups Links
<*> To visit your group on the web, go to:
http://groups.yahoo.com/group/jug-petropolis/
<*> To unsubscribe from this group, send an email to:
[EMAIL PROTECTED]
<*> Your use of Yahoo! Groups is subject to:
http://docs.yahoo.com/info/terms/