Hola, buenas tardes. Estoy iniciando con Struts2 y JavaEE.
Bien, lo que trato de hacer es interar una Lista con Iterator, pero lo que pasa es que no me reconoce la lista el iterator. Lo curioso es que si le cambio el value al iterator en el error que me muestra struts me sigue apareciendo el value anterior, es como si el contenedor no actualizara los values de los controles de struts.
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@taglib uri="/struts-tags" prefix="struts" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title> </head> <form action="respuesta"> <table border="1"> <struts:iterator value="pais"> <!-- Itera a traves de colecciones --> <tr> <!-- Si la coleccion es de objetos podemos llamar a los atributos del objeto por medio de property --> <td><struts:property value="idPais" /></td> <td><struts:property value="descPais" /></td> <td><struts:property value="numHabitantes" /></td> <td><struts:property value="catolico" /></td> <td><struts:property value="ingles" /></td> </tr> </struts:iterator> </table>
public String listarPaises() { listaPaises = new java.util.ArrayList<>(); Pais peru = new Pais(); peru.setIdPais("PE"); peru.setDescPais("Pais"); peru.setNumHabitantes(34000000); peru.setCatolico(true); Pais brazil = new Pais(); brazil.setIdPais("BR"); brazil.setDescPais("Brazil"); brazil.setNumHabitantes(120000000); brazil.setCatolico(true); Pais colombia = new Pais(); colombia.setIdPais("CO"); colombia.setDescPais("Colombia"); colombia.setNumHabitantes(48000500); colombia.setCatolico(true);
public java.util.List<Pais> getPaises() { return this.listaPaises; }
public String getId() { return id; } public void setId(String id) { this.id = id; }
}
Si cambio:
<struts:iterator value="listaPaises">
por cualquier otro value, me sigue apareciendo el error en referencia a listaPaises:
Struts has detected an unhandled exception:
Messages: tag 'select', field 'list', name 'id': The requested list key 'listaPaises' could not be resolved as a collection/array/map/enumeration/iterator type. Example: people or people.{name} tag 'select', field 'list', name 'id': The requested list key 'listaPaises' could not be resolved as a collection/array/map/enumeration/iterator type. Example: people or people.{name} - [unknown location]
Hola, buenas tardes. Estoy iniciando con Struts2 y JavaEE.
Bien, lo que trato de hacer es interar una Lista con Iterator, pero lo que pasa es que no me reconoce la lista el iterator. Lo curioso es que si le cambio el value al iterator en el error que me muestra struts me sigue apareciendo el value anterior, es como si el contenedor no actualizara los values de los controles de struts.
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@taglib uri="/struts-tags" prefix="struts" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<form action="respuesta">
<table border="1">
<struts:iterator value="pais"> <!-- Itera a traves de colecciones -->
<tr> <!-- Si la coleccion es de objetos podemos llamar a los atributos del objeto por medio de property -->
<td><struts:property value="idPais" /></td>
<td><struts:property value="descPais" /></td>
<td><struts:property value="numHabitantes" /></td>
<td><struts:property value="catolico" /></td>
<td><struts:property value="ingles" /></td>
</tr>
</struts:iterator>
</table>
<struts:select list="listaPaises" listkey="idPais" listValue="descPais" name="id"></struts:select>
<struts:submit label="Enviar"></struts:submit>
</form>
</html>
El action:
@SuppressWarnings("serial")
public class PaisAction extends ActionSupport {
private java.util.List<Pais> listaPaises;
private String id;
public String listarPaises() {
listaPaises = new java.util.ArrayList<>();
Pais peru = new Pais();
peru.setIdPais("PE");
peru.setDescPais("Pais");
peru.setNumHabitantes(34000000);
peru.setCatolico(true);
Pais brazil = new Pais();
brazil.setIdPais("BR");
brazil.setDescPais("Brazil");
brazil.setNumHabitantes(120000000);
brazil.setCatolico(true);
Pais colombia = new Pais();
colombia.setIdPais("CO");
colombia.setDescPais("Colombia");
colombia.setNumHabitantes(48000500);
colombia.setCatolico(true);
listaPaises.add(peru);
listaPaises.add(brazil);
listaPaises.add(colombia);
return SUCCESS;
}
public void setPaises(java.util.List<Pais> listaPaises) {
this.listaPaises = listaPaises;
}
public java.util.List<Pais> getPaises() {
return this.listaPaises;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}
Si cambio:
<struts:iterator value="listaPaises">
por cualquier otro value, me sigue apareciendo el error en referencia a listaPaises:
Struts has detected an unhandled exception:
Messages: tag 'select', field 'list', name 'id': The requested list key 'listaPaises' could not be resolved as a collection/array/map/enumeration/iterator type. Example: people or people.{name}
tag 'select', field 'list', name 'id': The requested list key 'listaPaises' could not be resolved as a collection/array/map/enumeration/iterator type. Example: people or people.{name} - [unknown location]
Uso Eclipse Kepler. Gracias por todo.