Display tag

17 respostas
F

meu jsp…

display:table name="artistas" pagesize="10"  class="its" style="width:500"  
 display:setProperty name="paging.banner.placement" value="bottom" 
  display:column title="Nome" property="name" href="index.jsp"  class="its"    
  display:column title="Ação"   class="its" decorator="scr.java.com.decorator.DecoratorArtista"  
 display:table

dentro das pastas scr/java/com tenho uma classe que chama getDecoratorArtista

ela ai…

public class getDecoratorArtista extends TableDecorator{
     
     /** Creates a new instance of ListPearlsDecorator */
     public getDecoratorArtista() {
         super();
     }
     
     public String getActionLinks(){
        Artista pearl = (Artista)getCurrentRowObject();
        
         HttpServletRequest request = (HttpServletRequest)getPageContext().getRequest();
         String parameters = "&";
         int lId = pearl.getCod();
         
        return "<a href=\"details.jsp?id=" + lId
			+ "&action=view\">Visualizar</a> | "
			+ "<a href=\"details.jsp?id=" + lId
			+ "&action=edit\">Editar</a> | "
			+ "<a href=\"details.jsp?id=" + lId
			+ "&action=delete\">Apagar</a>";
     }
     
 }

agora a @#$%$$## do erro…

javax.servlet.ServletException: Unable to load scr.java.com.decorator.DecoratorArtista due to a java.lang.ClassNotFoundException exception
	org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:848)
	org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:781)
	org.apache.jsp.pesquisarArtista_jsp._jspService(pesquisarArtista_jsp.java:158)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:362)

17 Respostas

C

Sua classe de decoração não está no classpath ou no seu .jar.

F

to usando o netbeans e adicionei o displaytag-1.1.jar no meu projeto… tenho qua fazer mais alguma coisa???

se eu tiro isso funciona blz

display:column title="Ação"   class="its" decorator="scr.java.com.decorator.DecoratorArtista"
G

Onde está seu decorator ? em qual pacote ? está no projeto ? pois o compilador não está encontrando.

F

Bom, tb imaginei que fosse isso…
me ajuda com uma coisa entao…
meu jsp ta na pasta WEB

a arvora do projeto é assim…

proj
| — scr
| --------- com
| --------------- decorator
| --------------------------- getDecoratorArtista()
|
WEB
meuJSP.jsp

como monto isso abaixo? podem ajudar?

display:table name="artistas" pagesize="10"  class="its" style="width:500"  
 display:setProperty name="paging.banner.placement" value="bottom" 
  display:column title="Nome" property="name" href="index.jsp"  class="its"   
 display:column title="Ação"   class="its" decorator="DecoratorArtista"   
 </display:table>
G

Segue um exemplo:

public class Artista {
  
   private operacoes;
   // outros atributos

   // gets e sets
}
<display:table name="listEmpresas" decorator="pacote.Decorator">
   <display:column property="propriedade_decorada" title=""/>
   // o resto das suas colunas
</display:table>

Ou seja:

<display:table name="listEmpresas" decorator="pacote.Decorator">
   <display:column property="operacoes" title=""/>
   // o resto das suas colunas
</display:table>

Para decorar você tem que criar uma propriedade na classe que está populando a displaytag. Assim, ela poderá pegar a propriedade e colocá-la na displaytag.

F

outro dia li que vc ia lançar um tutorial dessa @#$% de displaytag, ja saiu?

G

Ta difícil assim ? já mandei o tutorial para revisão… em breve deve estar no ar.

:wink:

C

Daqui a no máximo 2 dias sairá! :wink:

F
public class Artista {
 
   private operacoes;
   // outros atributos

   // gets e sets
}

o que esse private operacoes seria? nao to conseguindo fazer isso. o decorador ja esta pronto..

proj
| --- scr
| --------- com
| --------------- decorator
| --------------------------- getDecoratorArtista()
|
WEB
meuJSP.jsp

e a minha classe artista.java esta assim:

public class Artista {
 
  // <editor-fold defaultstate="collapsed" desc=" Property:   String name ">
  private String name;
/**
  *   @hibernate.property
  *     
 * column="NOM_ARTISTA"
  *     type="java.lang.String"
  *   @hibernate.column
  *     name="NOM_ARTISTA"
  */
   public String getName () {
      return name;
   } 
   public void setName (String name) {
      this.name = name;
   }
   // </editor-fold>

   // <editor-fold defaultstate="collapsed" desc=" PrimaryKey:   int cod ">
   private int cod;
/**
  *   @hibernate.id
  *     generator-class="increment"
  *     column="COD_ARTISTA"
  *     type="int"
  *   @hibernate.column
  *     name="COD_ARTISTA"
  *     not-null="true"
  */
   public int getCod () {
      return cod;
   } 
   public void setCod (int cod) {
      this.cod = cod;
   }
   //</editor-fold>

}

ja to ate desistindo....

F

ha… o erro é esse ai…

Error looking up property "DecoradorArtista" in object type "hibernate.Artista".

e o meu jsp…

display:table name="artistas" pagesize="10"  style="width:500" 
display:setProperty name="paging.banner.placement" value="bottom" 
display:column title="Nome" property="name" href="index.jsp"  
display:column title="Ação"  property="DecoradorArtista"
G

Você precisa ter um atributo na Classe Artista, para que o mesmo possa ter um método get sobrecarregado. Esse erro ocorre porque não há o atributo DecoradorArtista na classe Artista.

Experimente criar o seguinte trecho de código na classe Artista:

private String decoratorArtista;

Com isso, o decorator poderá utilizar esse atributo da classe Artista para decorar sua displaytag.

F

cara… eu sou muito vacilao… nao to conseguindo…

eu adicionei o:

private String decoratorArtista e criei os gets e sets dele… mas em alguma hora, creio eu que isso vai ter que fazer alguma ligaçao com isso aqui:

import hibernate.Artista;
import javax.servlet.http.HttpServletRequest;
import org.displaytag.decorator.TableDecorator;


 public class getDecoratorArtista extends TableDecorator{
  
     /** Creates a new instance of ListPearlsDecorator */
     public getDecoratorArtista() {
         super();
     }
     
     public String getActionLinks(){
        Artista pearl = (Artista)getCurrentRowObject();
        
         HttpServletRequest request = (HttpServletRequest)getPageContext().getRequest();
         String parameters = "&";
         int lId = pearl.getCod();
         
        return "<a href=\"details.jsp?id=" + lId
			+ "&action=view\">Visualizar</a> | "
			+ "<a href=\"details.jsp?id=" + lId
			+ "&action=edit\">Editar</a> | "
			+ "<a href=\"details.jsp?id=" + lId
			+ "&action=delete\">Apagar</a>";
     }
     
 }

e nao to conseguindo fazer isso

o erro persiste…

Error looking up property “decorator.getDecoratorArtista” in object type “hibernate.Artista”.

mas vc ja ajudou demais cara… vou fritar aqui e esperar seu tutorial sair, quem sabe vem uma luz

G

Vamos lá cara.. vamos resolver isso.

Você criou a seguinte linha na sua classe Artistaq que encontra-se no pacote hibernate(certo ?):

private String decoratorArtista;

public String getDecoratorArtista() {
  return decoratorArtista
}

public void setDecoratorArtista(String decoratorArtista) {
   this.decoratorArtista = decoratorArtista
}

Vamos fazer um teste com seu Decorator, coloque ele assim:

import hibernate.Artista;
import javax.servlet.http.HttpServletRequest;
import org.displaytag.decorator.TableDecorator;

public class Decorator extends TableDecorator {
 
   public String getDecoratorArtista() {
        Artista artista = (Artista) getCurrentRowObject();
        
        return "<a href=\"details.jsp?id=" + artista.getCod();
        + "&action=view\">Visualizar</a> | "
        + "<a href=\"details.jsp?id=" + artista.getCod();
        + "&action=edit\">Editar</a> | "
        + "<a href=\"details.jsp?id=" + artista.getCod();
        + "&action=delete\">Apagar</a>";
   }
     
}

E na displaytag:

<display:table name="listEmpresas" decorator="pacote.Decorator">
		<display:column property="name" title="Nome"/>
		<display:column property="decoratorArtista" title="Ação">
</display:table>

A única alteração que deve ser feita nesse código, é informar o pacote em que a classe Decorator está armazenada.

Teste essas coisas e me diga o resultado.

F

Cara… vc me ajudou demais, brigadao… ele agora passou mas ta dizendo que nao tem nenhum resultado. vou quebrar a abeça aqui e ver se acho. mas valeu mesmo!!! sem o decorator ele retornava 25…

G

Estranho… coloca teu código inteiro aqui para analizarmos.

Agora eu creio que o decorator esteja certo. Deve ser algum probleminha simples de resolver.

F

Cara, funcionou… graças a voce. brigadao mesmo

G

Ótimo… qualquer dúvida, poste!

Criado 7 de junho de 2006
Ultima resposta 12 de jun. de 2006
Respostas 17
Participantes 3