Pessoal tenho um formulário que simplesmente chama uma action do WebWork, esta action deveria chamar uma classe que devolverá todos os estados do Brasil (através de um método que retorna um List) e devolver a um JSP que vai listar os estados, mas não está listando nada…
Action
package teste;
import java.util.List;
import com.opensymphony.xwork.ActionSupport;
public class ActionEstado extends ActionSupport {
private static final long serialVersionUID = 1L;
private List lista;
public String execute() throws Exception {
DAOEstado e = new DAOEstado();
// metodo que retorna o objeto List
this.lista = e.selEstados();
return SUCCESS;
}
public List getLista() {
return lista;
}
public List setLista() {
return lista;
}
}
e o JSP que o action direciona
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<c:forEach var="estado" items="${lista}">
<c:out value="${estado.nome}"/>
</c:forEach>
xwork.xml
<!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.0//EN" "http://www.opensymphony.com/xwork/xwork-1.0.dtd">
<xwork>
<include file="webwork-default.xml" />
<package name="default" extends="webwork-default">
<default-interceptor-ref name="defaultStack" />
<action name="estado" class="teste.ActionEstado">
<result name="success" type="dispatcher">sucesso.jsp</result>
<result name="error" type="dispatcher">erro.html</result>
</action>
</package>
</xwork>
Alguém sabe o que poderia ser??? Não dá erro, simplesmente não lista os valores, para testar se os valores estão sendo retornados fiz o seguinte e listou normalmente:
package br.com.visualsystems.cct;
import java.util.ArrayList;
import java.util.List;
public class Teste {
public static void main(String[] args) {
List lista;
lista = new ArrayList();
DAOEstado e = new DAOEstado();
lista = e.selEstados();
for (int i=0; i< lista.size(); i++)
{
Estado est = (Estado)lista.get(i);
System.out.println("Estado: "+est.getNome()+" Sigla: "+ est.getSigla());
}
}
}
vc esta setando essa lista em algum escopo pro JSTL ler na view?
O meu web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<display-name>Teste WebWork</display-name>
<taglib>
<taglib-uri>http://java.sun.com/jstl/fmt</taglib-uri>
<taglib-location>/WEB-INF/tld/fmt.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jstl/fmt-rt</taglib-uri>
<taglib-location>/WEB-INF/tld/fmt-rt.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jstl/core</taglib-uri>
<taglib-location>/WEB-INF/tld/c.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jstl/core-rt</taglib-uri>
<taglib-location>/WEB-INF/tld/c-rt.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jstl/sql</taglib-uri>
<taglib-location>/WEB-INF/tld/sql.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jstl/sql-rt</taglib-uri>
<taglib-location>/WEB-INF/tld/sql-rt.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jstl/x</taglib-uri>
<taglib-location>/WEB-INF/tld/x.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jstl/x-rt</taglib-uri>
<taglib-location>/WEB-INF/tld/x-rt.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>webwork</taglib-uri>
<taglib-location>/WEB-INF/lib/webwork-2.1.7.jar</taglib-location>
</taglib>
<servlet>
<servlet-name>webwork</servlet-name>
<servlet-class>com.opensymphony.webwork.dispatcher.ServletDispatcher
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>AplicationInitializer</servlet-name>
<servlet-class>br.com.visualsystems.cct.Initializer</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>webwork</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>
</web-app>
Seria isso???
[quote=“santoro”]
Seria isso???[/quote]
Não.
heheheh, estou me referindo a isto:
<c:forEach var="estado" items="${lista}">
<c:out value="${estado.nome}"/>
</c:forEach>
de onde vem esse “lista” no forEach? Imagino q seja ele q traz o resultado da chamada do teu método no DAO né? Onde tu esta setando esse “lista” pro EL reconhecer? Lembre-se de que o Webwork guarda esses objetos num escopo próprio, e não em page, request, session ou application, que é onde a EL vai ler. Neste caso, tu precisa iterar usando as tags do próprio framework.
e como eu faria para listar estes dados via tags do webwork???