Problema com Out.print de dentro da classe

12 respostas
L

Dae povo,

Fiz uma classezinha pra mim monta um combobox de html mermo… tudo ok na mais perfeita ordem, porem quando eu do o call na função write q eu criei pra escrever o combo ele não funca…

public String write(){
		System.out.println(this.html);
		return this.html;
	}

Tipo olhem quando eu crio ela:

<%
ComboItem cbs[] = new ComboItem[2];
cbs[0] = new ComboItem("Teste", "1", null, true);
cbs[1] = new ComboItem("Teste", "2", "testes", false);

ComboBox cbx = new ComboBox("testedecombo", cbs, "teste", "alert(this.value);", true);
cbx.write();
%>

Esse cbx.write(); não imprime nada na tela… estranho… so funciona se eu fizer assim:

<%=cbx.write()%>

mais tb so pq eu botei o return da var html la…

Alguém sabe me dizer pq a classe não imprime no JSP?

Abracetas… :wink:

12 Respostas

D

O System.out.println() não envia nenhum dado ao browser do cliente.

Só funcionou com <%=cbx.write()%>

pq <%=metodo()%> executa o metodo() e joga no browser do cliente o que foi retornado.

L

E como eu faço para fazer o print apartir da classe?

M

passe o objeto implicito “out” como referencia pro teu método =p

ps: isso é gambi

E

Bom dia.

Ou vc faz assim:

public String write&#40;&#41;&#123; 
      return this.html; 
   &#125;

E depois:

&lt;% 
ComboItem cbs&#91;&#93; = new ComboItem&#91;2&#93;; 
cbs&#91;0&#93; = new ComboItem&#40;"Teste", "1", null, true&#41;; 
cbs&#91;1&#93; = new ComboItem&#40;"Teste", "2", "testes", false&#41;; 

ComboBox cbx = new ComboBox&#40;"testedecombo", cbs, "teste", "alert&#40;this.value&#41;;", true&#41;; 
out.print&#40;cbx.write&#40;&#41;&#41;;
%&gt;

Ou ainda:

&lt;html&gt;
 Meu Combo&#58; &lt;%= cbx.write&#40;&#41; %&gt;
&lt;/html&gt;

Espero ter ajudado.

t+

J

passe o objeto implicito “out” como referencia pro teu método =p

ps: isso é gambi

Opa, como que faz essa ‘gambi’ ? digo, passar o ‘out’ por referência…

M

tive essa mesma dúvida, preciso de fazer um out.print dentro da classe, mas ninguém soube responder meu tópico, dei diversos ups mas nada.
Será que não tem jeito ou o pessoal não tá colaborando?

M

assim ó:

no teu servlet:

Foo f = new Foo&#40; response.getWriter&#40;&#41; &#41;;

na tua classe Foo:

class Foo &#123;

   private PrintWriter out;

   public Foo&#40; PrintWriter out &#41; &#123;

      setPrintWriter&#40; out &#41;;
   &#125;

   //getters and setters e oq for
&#125;
M

Bem, tenho uma solução menos gambi, porque você não gera duas listas caso os valores forem direfentes dos rótulos do seu combobox. Apartir ter as lista você as incluem como atributtos da solicitação e você pode ler estas listas no teu jsp usando jstl ou o utilitário java.util.Iterator.

:pensativo:

M

deu um erro aqui.

D:\tomcatroot\WEB-INF\classes\foo>javac foo.java

foo.java:3: cannot find symbol

symbol  : class PrintWriter

location: class Foo

private PrintWriter out;

^

foo.java:5: cannot find symbol

symbol  : class PrintWriter

location: class Foo

public Foo( PrintWriter out ) {

^

2 errors
M

“mhferreira”:
deu um erro aqui.

D:\tomcatroot\WEB-INF\classes\foo>javac foo.java

foo.java:3: cannot find symbol

symbol  : class PrintWriter

location: class Foo

private PrintWriter out;

^

foo.java:5: cannot find symbol

symbol  : class PrintWriter

location: class Foo

public Foo( PrintWriter out ) {

^

2 errors</blockquote>

q tal importar a classe PrintWriter antes de compilar :roll:

M

Aê matheus, dá pra explicar melhor?

Veja o que eu to tentando fazer:

import java.io.*;

class Foo &#123;

   private PrintWriter out;

   public Foo&#40; PrintWriter out &#41; &#123;

      setPrintWriter&#40; out &#41;;
   &#125;

   //getters and setters e oq for
   out.print &#40;"&lt;HTML&gt;"&#41;;
   out.print&#40;"&lt;BODY&gt;"&#41;;
   out.print&#40;"&lt;H1&gt;TESTE&lt;/H1&gt;"&#41;;
   out.print&#40;"&lt;/BODY&gt;"&#41;;
   out.print&#40;"&lt;/HTML&gt;"&#41;;

   out.close&#40;&#41;;

&#125;

erro:

D&#58;\tomcatroot\WEB-INF\classes\outprintnoclass&gt;javac foo.java foo.java&#58;14&#58; &lt;identifier&gt; expected out.print &#40;&quot;&lt;HTML&gt;&quot;&#41;; ^ foo.java&#58;15&#58; &lt;identifier&gt; expected out.println&#40;&quot;&lt;BODY&gt;&quot;&#41;; ^ foo.java&#58;16&#58; &lt;identifier&gt; expected out.println&#40;&quot;&lt;H1&gt;TESTE&lt;/H1&gt;&quot;&#41;; ^ foo.java&#58;17&#58; &lt;identifier&gt; expected out.println&#40;&quot;&lt;/BODY&gt;&quot;&#41;; ^ foo.java&#58;18&#58; &lt;identifier&gt; expected out.println&#40;&quot;&lt;/HTML&gt;&quot;&#41;; ^ foo.java&#58;20&#58; &lt;identifier&gt; expected out.close&#40;&#41;; ^ 6 errors

M

HAUAHUAHAUAHU Deu certo!!! uhuhuhu
Já ia desistir e xingar todo mundo :lol: :lol: :lol:

Aí galera que tá aprendendo, vou postar o código completo aqui, basta testar.

Arquivo index.jsp

&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http&#58;//www.w3.org/TR/html4/loose.dtd"&gt;
&lt;%@ page contentType="text/html" language="java" import="java.sql.*"%&gt;
&lt;%@page import="teste.Foo"%&gt;
&lt;%@page import="teste.Fonte"%&gt;
&lt;head&gt;
&lt;title&gt;Imprimindo no class&lt;/title&gt;
&lt;body&gt;
&lt;%
new Foo&#40; response.getWriter&#40;&#41; &#41;;  
out.print&#40;"&lt;br&gt;"&#41;;
new Foo&#40; response.getWriter&#40;&#41; &#41;;  

%&gt;
&lt;/body&gt;
&lt;/head&gt;

Arquivo Foo.class

package teste;
import java.io.PrintWriter;

public class Foo &#123;
    public PrintWriter out;

    public Foo&#40;PrintWriter out&#41; &#123;
        out.print&#40;"&lt;table border='0' cellpadding='0' cellspacing='0' width='100%' bgcolor='#F7F3EF' id='table1'&gt;"&#41;;
        out.print&#40;"&lt;tr&gt;"&#41;;
        out.print&#40;"&lt;td&gt;"&#41;;
        out.print&#40;"&lt;p align='center'&gt;&lt;b&gt;&lt;font face='Tahoma'&gt;Teste do marcos&lt;/font&gt;&lt;/b&gt;&lt;/td&gt;"&#41;;
        out.print&#40;"&lt;/tr&gt;"&#41;;
        out.print&#40;"&lt;tr&gt;"&#41;;
        out.print&#40;"&lt;td bgcolor='#FFFF00'&gt;"&#41;;
        out.print&#40;"&lt;p align='center'&gt;&lt;b&gt;&lt;font face='Verdana' color='#FF0000'&gt;Funcionou!!!!&lt;/font&gt;&lt;/b&gt;&lt;/td&gt;"&#41;;
        out.print&#40;"&lt;/tr&gt;"&#41;;
        out.print&#40;"&lt;/table&gt;"&#41;;
   &#125; 
&#125;

Lembrando que vc no meu caso eu coloquei o arquvo Foo.class dentro da pasta teste que está dentro de classes, porquê estou usando um package.

Se alguém tiver alguma dúvida nessa montagem que eu postei acima me avise.

Criado 31 de maio de 2005
Ultima resposta 13 de jun. de 2005
Respostas 12
Participantes 7