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!
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: