Javascript e displaytag

Na realidade a origem do erro esta no Casting do Bean:

[/code]
ListObject objeto = (ListObject) getCurrentRowObject();

[code]

Aí depois acontece erro de retorno nulo, mas tudo em consequência do displaytag não conseguir fazer esse Casting da minha Lista com o método da classe TableDecorator buscando os dados da linha corrente…

Agora o motivo desse Casting não dar certo é o que não consigo descobrir!!!

Quanto ao código do Iron, é isso mesmo, só que o que eu fiz foi setar a lista no request a partir do meu servlet(que no meu caso é uma action do Struts), sendo que poderia ser setado usando o padrão MVC para livrar o jsp de código java…

Claro que esse jeito que esta sendo feito também funciona normalmente, só que fica mais difícil para o Webmaster “desenhar” a página…

Ótima idéia Iron, vou tentar fazer isso agora mesmo…

Mas acredito que ao invés de dar o erro de sempre, ele vai retornar sem dados, será? parece que sim, mas vou tentar agora e ver no que vai dar…

Realmente, o problema estava no Casting…

A dica do Iron resolveu grande parte do problema…

Isso porque minha aplicação busca os dados na mesma consulta em dois bancos, a saber DB2 e SQLServer…

Aí o desenvolvedor que fez o bean fez um para cada banco e um outro que juntava apenas os dados principais destes beans…

Por isso, ao fazer instanceof eu posso distinguir entre um bean e outro retornando assim os dados de origem para o displaytag trabalhar…

Show!!! Agora ta funcionando massa…

O grande problema agora é o desempenho, esta muuuuuuuuuito lento…

Vou pesquisar sobre a junção de AJAX com Displaytag para ver como posso melhorar isso!!!

Valeu pessoal!!!

Show! :slight_smile:

Isso não está ocorrendo pq vc faz uma busca em 2 bancos?(caramba,que loucura!!!)

hugo, aquele código com scriplets que eu postei acima dah erro na minha action!Minha action:

public void execute(HttpServletRequest req, HttpServletResponse response) throws ExcecaoAction { try { String pesquisa=req.getParameter("tiposeg"); System.out.println("Parâmetro passado no request:"+pesquisa); if(pesquisa.equals("data")) req.getRequestDispatcher("ramos-por-data.jsp").forward(req,response); else if(pesquisa.equals("valor")) req.getRequestDispatcher("valores-ramo").forward(req,response); else if(pesquisa.equals("seguradora")) req.getRequestDispatcher("seguradoras-ramo").forward(req,response); }catch(ServletException se){ se.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return ; }
Estranho que tenho outra action que faz a mesma coisa e não dah pau!
A diferença é que eu não chamo a execução dela de um scriptlet.

Erro:

Exception:
javax.servlet.ServletException: Servlet execution threw an exception
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:275)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:398)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301)
at ageris.actions.ComandoSelecionarPesquisa.execute(ComandoSelecionarPesquisa.java:21)
at ageris.controle.Controlador.service(Controlador.java:47)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

Alguém sabe me informar pq ás vezes o log4j gera um log tão monstruoso?Eu tô recebendo um log de 134KB cada vez que dah um erro!E no caso, ele repete o código do erro que foi postado acima umas 100 vezes! :shock:

Iron, mas com essa tua ação, tu pretende exibir os dados na tua jsp, certo? Uma jsp com display??

Se for com a display, para ti nao ter akela scriptlet que te mostrei no exemplo, tu pode pode instanciar o teu dao na tua action, e setar ela como um atributo na tua request.
Vai ser praticamente a mesma coisa, só que tu nao vai ter akele scriptletzinho na jsp…

[ ]'s,
Misael Silveira.

Isso!!!

Fala em colocar Dao.getCollection nas tags?
Eu não saquei muito bem o que vc quis dizer não!

Modifica por exemplo esse que eu coloquei para eu ter uma idéia:

<%@ taglib uri="http://displaytag.sf.net" prefix="display" %>
 <%@ page import="ageris.dao.MySQLRamoDeSeguroDAO,java.util.*"%>
 <% MySQLRamoDeSeguroDAO msrdsd = new MySQLRamoDeSeguroDAO();
  List lista = msrdsd.retornarColecaoDeRamosDeSeguro("data"); 
  request.setAttribute("ramoseg",lista); %>
 <h2>Exibindo Ramos de Seguro:</h2>
 <display:table name="ramoseg" pagesize="10">

Tá usando struts neh??
Eu nunca usei esse troço, entao vou fazer o teu exemplo como se fosse com uma servlet de controller normal, com get e post.

Esse seria o método get de uma servlet controladora:

doGet( HttpServletRequest request, HttpServletResponse response ) {

     if( request.getParameter("pesquisa").equals("data") ) {  
         MySQLRamoDeSeguroDAO msrdsd = new MySQLRamoDeSeguroDAO();
        List lista = msrdsd.retornarColecaoDeRamosDeSeguro("data"); 
        request.setAttribute("ramoseg",lista);         request.getRequestDispatcher("ramos-por-data.jsp").forward(request,response);
     }
}

na tua jsp “ramos-por-tada.jsp” ficaria assim então:

<%@ taglib uri="http://displaytag.sf.net" prefix="display" %>
<h2>Exibindo Ramos de Seguro:</h2>
 <display:table name="ramoseg" pagesize="10">

Struts?!Sai de mim!!!Huaa…
Não, estou usando aquele velho estilo controller-actions, tacando cada action numa HashMap, chamando a action correspondente de acordo com a ação…

Ah, saquei!A única diferença é que isso fica numa action… vou testar aqui e lhe aviso!

É… ainda não foi não…dah um erro chato:

javax.servlet.ServletException: Servlet execution threw an exception
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:275)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:398)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301)
at ageris.actions.ComandoSelecionarPesquisa.execute(ComandoSelecionarPesquisa.java:28)
at ageris.controle.Controlador.service(Controlador.java:47)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

Agora, alguém já teve problemas com o log4j???PQP!!!Um dos logs de erro acabou de bater 27,6MB!!!Detalhe: apenas repetia o erro acima…
Chegou atravar tudo aqui por alguns instantes… :shock: