Foros del Web » Programación para mayores de 30 ;) » Java »

problema al sacar datos en jsp

Estas en el tema de problema al sacar datos en jsp en el foro de Java en Foros del Web. Bueno a ver explico el problema que tengo a ver si puedo solucionarlo ya que llevo varios dias y estoy un poco atascado. La idea ...
  #1 (permalink)  
Antiguo 23/12/2010, 07:37
 
Fecha de Ingreso: agosto-2010
Mensajes: 51
Antigüedad: 13 años, 8 meses
Puntos: 1
problema al sacar datos en jsp

Bueno a ver explico el problema que tengo a ver si puedo solucionarlo ya que llevo varios dias y estoy un poco atascado. La idea es que yo lea un fichero excel de mi escritorio por ejemplo y que saque los datos en una jsp con ese formato. Lo de leer el fichero en un metodo Java lo tengo echo y me funciona guay me trae los datos y todo eso el problema viene cuando llamo a la jsp me da el error "javax.servlet.ServletException: javax.servlet.jsp.JspTagException: Don't know how to iterate over supplied "items" in <forEach>", entonces ese es mi problema, os voy a pegar los trozos de codigo que tengo echos sobretodo del metodo y la jsp, y de 2 bean que en uno controlo las filas y otro las celdas a ver si alguien me pudiera ayudar.

Metodo de lectura del fichero
Código:
Metodo que llama al de leer el fichero
protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception{
	ModelAndView mav = new ModelAndView("documentacionAnualidadListaExcelView");
//	SpsiExpedienteBuscador buscadorSpsiExpediente = (SpsiExpedienteBuscador) request.getSession().getAttribute("buscadorSpsiExpediente");
	Anualidad anualidad = new Anualidad();
	File file = new File("C:/Documents and Settings/david.gomez/Escritorio/Libro1.xls");
	leeArchivo(file, anualidad);
	mav.addObject("anualidad",anualidad);
	return mav;
 }

	@SuppressWarnings("unchecked")
	protected Vector leeArchivo(File file, Anualidad anualidad){
		Vector informacionArchivo = new Vector();
		POIFSFileSystem poifsFileSystem = null;
		try {
			poifsFileSystem = new POIFSFileSystem(new FileInputStream(file));
		}catch (FileNotFoundException ex) {
			ex.printStackTrace();
		}catch (IOException ex) {
			ex.printStackTrace();
		}
		HSSFWorkbook hssfWorkbook = null;
		try{
			hssfWorkbook = new HSSFWorkbook(poifsFileSystem);
		}catch (IOException ex) {
			ex.printStackTrace();
		}
		HSSFSheet hssfSheet = hssfWorkbook.getSheetAt(0);
//		buscadorSpsiExpediente.setFilas((Collection)hssfSheet.rowIterator());
		Iterator it = hssfSheet.rowIterator();
		while(it.hasNext()){
			Filas fila = new Filas();
			//Recorro datos de fila en fila
			HSSFRow hssfRow = (HSSFRow)it.next();
			Vector informacionFila = new Vector();
			//Me recorro todos los elementos de una fila
				for(short i = hssfRow.getFirstCellNum(); i < hssfRow.getLastCellNum(); i++){
						HSSFCell hssfCell = hssfRow.getCell(i);
						
						//Si la celda es nula meter un blanco en la celda
						if(hssfCell == null){
							informacionFila.add("");
						}
						if(hssfCell != null){
							Celdas celdaAux = null;
							switch(hssfCell.getCellType()){
		                        case HSSFCell.CELL_TYPE_BLANK: 
		                        				informacionFila.add(""); 
		                        				break;
		                        case HSSFCell.CELL_TYPE_BOOLEAN: 
		                        				informacionFila.add(hssfCell.getBooleanCellValue());
		                        				celdaAux = new Celdas(i, String.valueOf(hssfCell.getBooleanCellValue()));
		                        				break;
		                        case HSSFCell.CELL_TYPE_FORMULA: informacionFila.add(hssfCell.getNumericCellValue()); 
						                        celdaAux = new Celdas(i, String.valueOf(hssfCell.getNumericCellValue()));
						                        break;
		                        case HSSFCell.CELL_TYPE_NUMERIC: informacionFila.add(hssfCell.getNumericCellValue()); 
		                        				celdaAux = new Celdas(i, String.valueOf(hssfCell.getNumericCellValue()));
		                        				break;
		                        case HSSFCell.CELL_TYPE_STRING: informacionFila.add(hssfCell.getStringCellValue()); 
		                        				celdaAux = new Celdas(i, hssfCell.getStringCellValue()); 
		                        				break;
		                        default: break;
							}
							//Se añaden los valores de las celdas a la fila
							fila.getFilas().add(celdaAux);
						}
				}
				//Se añade la informacion de cada fila al archivio
				anualidad.getFilas().add(fila);
				informacionArchivo.add(informacionFila);
			}
		return informacionArchivo;
		}
Aqui dejos los bean de Filas y Celdas
Código:
public class Filas {
	
	private Collection<Celdas> filas;
	
	public Filas(){
		this.filas = new ArrayList<Celdas>(0);
	}

	public Collection<Celdas> getFilas() {
		return filas;
	}

	public void setFilas(Collection<Celdas> filas) {
		this.filas = filas;
	}

	
}

public class Celdas {
	private short posicion;
	private String celdas;
	
	public Celdas(short posicion, String celdas){
		this.posicion = posicion;
		this.celdas = celdas;
	}
	
	public String getCeldas() {
		return celdas;
	}
	public void setCeldas(String celdas) {
		this.celdas = celdas;
	}

	public short getPosicion() {
		return posicion;
	}

	public void setPosicion(short posicion) {
		this.posicion = posicion;
	}
}
Aqui dejo el codigo de la JSP
Código:
<%@ include file="../comun/include.jsp" %>
<%@ page import="es.mcu.iphe.sigi.util.*" %>
<!-- Set the content type header with the JSP directive -->
<%@ page contentType="application/vnd.ms-excel" %>                                                              
<!-- Set the content disposition header -->
<% response.setHeader("Content-Disposition", "attachment; filename=\"C:/Documents and Settings/xxx/Escritorio/Libro1.xls\""); %>


<form:form commandName="anualidad">
	<h2><fmt:message key="lit.bien.titulo"/> - Modificación del Excel</h2>
	<div class="bloque">
		<table border="1" cellpadding="0" cellspacing="0" class="tblResultados" id="admUsuResultados">
			<caption>Modificar Datos del Excel</caption>
			<c:out value="${filas}"/>
			<c:forEach var="fila" items="${anualidad.filas}">
			<tr>
				<c:forEach var="celda" items="${fila}">
					<td class="txto">
						<c:out value="${celda.celdas}"/>
					</td>
				</c:forEach>
			</tr>
			</c:forEach>
		</table></br>
		<input type="submit" value="Modificar"/>
	</div>
</form:form>
Aqui dejo el objeto que tiene como uno de sus atributos las filas del archivo

Código:
Dejo unicamente los GET y SET del atributo en si que la clase es muy grande

private ArrayList<Filas> filas = new ArrayList<Filas>(0);
	
	public ArrayList<Filas> getFilas() {
		return filas;
	}

	public void setFilas(ArrayList<Filas> filas) {
		this.filas = filas;
	}
Y yo creo que no se me olvida nada de lo que estoy tocando a ver si alguien me pudiera ayudar a solucionarlo que esty enbuclao en el problema...

Gracias

Última edición por dubby; 23/12/2010 a las 07:45
  #2 (permalink)  
Antiguo 27/12/2010, 02:08
 
Fecha de Ingreso: agosto-2010
Mensajes: 51
Antigüedad: 13 años, 8 meses
Puntos: 1
Respuesta: problema al sacar datos en jsp

nadie me puede echar una manita??

Etiquetas: jsp
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:21.