rapatao 18 de jul. de 2007
Posso estar enganado, mas acredito que você está passando um Iterator com nome diferente do que você verifica, verifique isso!
De qualquer maneira, tente trocar a ordem dos <logic…>
Deixe assim:
<logic:notEmpty name= "autor" scope= "request" >
<logic:iterate name= "autor" id= "aa" scope= "request" >
//seu codigo
</logic:iterate>
</logic:notEmpty>
<logic:Empty name= "autor" scope= "request" >
///seu codigo
</logic:Empty>
Tente efetuar estas mudanças…
Abraços
foliveira81 18 de jul. de 2007
Amigo depois q verificar a dica do amigo, apenas para conselho mesmo rs alias sujestao rs, comece a usar JSTL pois vc deixa seu JSP idependente de API como Struts, pois se amanha vc pegar essa jsp e usar um servelet ou um vraptor tera q mudar todas e se tiver usando JSTL so vai mudar a camada de controle da sua aplicação…
Ex. jstl
<c:choosse>
<c:when test${obj.atributo != null} >
seu htmk
</c:when>
<c:when test${obj.atributo == ‘oi’} >
seu htmk
</c:when>
</c:choosse>
para percorrer
<c:forEachvar=“lista” items="${seu objeto collection}">
lista.atribute
</c:forEachvar>
espero ter ajudado rs…
Att
Guto_Magalhaes 19 de jul. de 2007
Cara, eu não sei se vou poder te ajudar, ja que eu não manjo quase nada de jsp, mas vc esta utilizando o que para enviar os dados? Se for uma collection, de um jeito de mapear no struts-config.xml tipo uma constante para identificar cada collection que vc ira utilizar na interface do usuario, e ai crie uma interface no java so para setar as constantes, e implemente esta interface na sua action.
Falow ae
rodrigobernaola 20 de jul. de 2007
rapatao:
Posso estar enganado, mas acredito que você está passando um Iterator com nome diferente do que você verifica, verifique isso!
De qualquer maneira, tente trocar a ordem dos <logic…>
Deixe assim:
<logic:notEmpty name= "autor" scope= "request" >
<logic:iterate name= "autor" id= "aa" scope= "request" >
//seu codigo
</logic:iterate>
</logic:notEmpty>
<logic:Empty name= "autor" scope= "request" >
///seu codigo
</logic:Empty>
Tente efetuar estas mudanças…
Abraços
Tô apanhando aqui “rapatao”, vê se tu consegue da uma força, dei uma mudada no codigo mais continua sem rodar, segue em anexo o codigo:
...
<tbody>
<logic:iterate name= "AutoresActionForm"
property= "autor"
id= "autor" >
<tr>
<td>
<bean:write name= "autor" property= "autorId" />
</td>
<td>
<bean:write name= "autor" property= "nome" />
</td>
<td>
<bean:write name= "autor" property= "email" />
</td>
<td>
<bean:write name= "autor"
property= "nascimento"
format= "dd/MM/yyyy" />
</td>
</tr>
</logic:iterate>
<logic:notPresent name= "autor" >
<tr>
<td colspan= "3" > Nenhum autor encontrado.</td>
</tr>
</logic:notPresent>
</tbody>
...
O erro que ta dando é esse:
HTTP Status 500 -
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException: Exception in JSP: /welcomeStruts.jsp:20
17:
18:
19:
20: <logic:iterate name=“AutoresActionForm”
21: property=“autor”
22: id=“autor”>
23:
Stacktrace :
org . apache . jasper . servlet . JspServletWrapper . handleJspException ( JspServletWrapper . java : 504 )
org . apache . jasper . servlet . JspServletWrapper . service ( JspServletWrapper . java : 375 )
org . apache . jasper . servlet . JspServlet . serviceJspFile ( JspServlet . java : 314 )
org . apache . jasper . servlet . JspServlet . service ( JspServlet . java : 264 )
javax . servlet . http . HttpServlet . service ( HttpServlet . java : 802 )
org . netbeans . modules . web . monitor . server . MonitorFilter . doFilter ( MonitorFilter . java : 368 )
root cause
javax.servlet.ServletException: Cannot find bean: “AutoresActionForm” in any scope
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:858)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:791)
org.apache.jsp.welcomeStruts_jsp._jspService(welcomeStruts_jsp.java:179)
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:332)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)
root cause
javax.servlet.jsp.JspException: Cannot find bean: “AutoresActionForm” in any scope
org.apache.struts.taglib.TagUtils.lookup(TagUtils.java:935)
org.apache.struts.taglib.logic.IterateTag.doStartTag(IterateTag.java:232)
org.apache.jsp.welcomeStruts_jsp._jspService(welcomeStruts_jsp.java:98)
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:332)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)
note The full stack trace of the root cause is available in the Apache Tomcat/5.5.17 logs.
Apache Tomcat/5.5.17
rapatao 20 de jul. de 2007
Não li o stacktrace inteiro, mas acho que sei qual é o problema!
Em seu Servlet controlador, você está passando na requisição um Iterator? E em algum momento ele vai nulo? Enfim, acredito que o problema é justamente aí, que você passa um Iterator nulo.
Antes de utilizar o <logic:iterate… você precisa verificar se o mesmo está nulo ou não! Olhe que você verifica se ele é nulo para exibir uma mensagem, o mesmo deve ser feito, porém verificando se o mesmo não é nulo. Ele não sendo, deve se usar o iterate, caso não ele gera uma Exception.
Ahh, não sei se é realmente necessário, mas acredito que você precise também indicar de onde vem este Iterator, ou seja, como no meu exemplo dado anteriormente …scope=“request”>
Enfim, é isso…
Boa sorte!