Zona HTML Zona Java Zona PHP Zona ASP Zona Bases de datos
Inicio > Foros > Java (Servlets y JSP) > Problema de concepto de iterate y struts
-Foros de debate

Java (Servlets y JSP)
Lista de foros | Lista de mensajes de este foro

Privacidad: Recuerde que la información escrita en los foros de programación es 100% pública y que su ip será registrada asociada a su mensaje. Si encuentra un mensaje fuera de lugar, por favor, notifiquelo para su revisión y eliminación.

Problema de concepto de iterate y struts
Enviado por frodogus el día 2 de junio de 2006

Buenas a todos.

Os comento en que puntos nos encontramos para ver si puedes ayudarnos.

Tenemos implementado struts 1.2 con hibernate 3.1. Nuestras herramientas son Eclipse y MyEclipse. Estamos probando con una tabla normal sin foreign key.

El mapeo de la tabla con hibernate y la lógica de negocio para la manipulación de las tablas esta probado y va correctamente.

Comento paso a paso lo que se realiza con el código:

Primeramente se llama al forward showTKA. El servlet ejecuta en consecuencia el execute del ShowTKAAction.java:

public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) {
System.out.println(\"action\");

ShowTKAForm showTKAForm = (ShowTKAForm) form;
GestionTKAPP gestionAPP = new GestionTKAPP();
showTKAForm.setAplicaciones(gestionAPP.getAplicaciones());
// TODO Auto-generated method stub
return mapping.findForward(\"showListaTKA\");
}

La lógica de negocio (GestionTKAPP.getAplicaciones()) devuelve los datos de la tabla correctamente asignandoselos al atributo del form ShowTKAForm:

public class ShowTKAForm extends ActionForm {
private TKitAplicacion[] tkapp = new TKitAplicacion[0];;
public void reset(ActionMapping mapping, HttpServletRequest request) {
tkapp = new TKitAplicacion[0];
// TODO Auto-generated method stub
}

public TKitAplicacion[] getAplicaciones(){
return tkapp;
}

public void setAplicaciones(TKitAplicacion[] tka){
this.tkapp = tka;
}
}

La acción de showListaTKA redirije hacia el jsp que muestra los datos con codificación:
<%@ page language=\"java\"%>
<%@ taglib uri=\"http://jakarta.apache.org/struts/tags-bean\" prefix=\"bean\"%>
<%@ taglib uri=\"http://jakarta.apache.org/struts/tags-html\" prefix=\"html\"%>
<%@ taglib uri=\"http://jakarta.apache.org/struts/tags-logic\" prefix=\"logic\"%>

<html>
<head>
<title>JSP for ShowTKAForm form</title>
</head>
<body>
<table border=\"1\">
<tbody>
<tr>
<td>kapCodigo</td>
<td>kapDescripcion</td>
</tr>
<%-- start with an iterate over the collection books --%>
<logic:iterate name=\"showTKAForm\" property=\"tkapps\" id=\"tkapp\">
<tr>
<%-- book informations --%>
<td><bean:write name=\"tkapp\" property=\"kapCodigo\" /></td>
<td><bean:write name=\"tkapp\" property=\"kapDescripcion\" /></td>
</tr>
</logic:iterate>
<%-- end interate --%>
<logic:notPresent name=\"tkapp\">
<tr> <td colspan=\"5\"> No encuentra aplicaciones. </td> </tr>
</logic:notPresent>
</tbody>
</table>
</body>
</html>

Te remito tambien el fichero struts-config.xml:

<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<!DOCTYPE struts-config PUBLIC \"-//Apache Software Foundation//DTD Struts Configuration 1.2//EN\" \"http://struts.apache.org/dtds/struts-config_1_2.dtd\">
<struts-config>
<data-sources />

<form-beans >
<form-bean name=\"showTKAForm\" type=\"libreria.struts.form.ShowTKAForm\" />
</form-beans>

<global-exceptions /> <global-forwards >

<forward
name=\"inicio\"
path=\"/default.do\"
redirect=\"true\" />

<forward name=\"showTKA\" path=\"showTKA.do\" redirect=\"true\" />

<forward
name=\"showListaTKA\"
path=\"/jsp/showTKA.jsp\"
redirect=\"true\" />
</global-forwards>

<action-mappings >
<action
forward=\"/jsp/index.jsp\"
path=\"/default\"
unknown=\"true\" />

<action
attribute=\"showTKAForm\"
name=\"showTKAForm\"
path=\"/showTKA\"
scope=\"request\"
type=\"libreria.struts.action.ShowTKAAction\"
validate=\"false\" />
</action-mappings>
<message-resources parameter=\"libreria.struts.ApplicationResources\" />
</struts-config>

El error que nos da es el siguiente:

13:22:59,698 ERROR [Engine] StandardWrapperValve[jsp]: Servlet.service() for servlet jsp threw exception

javax.servlet.jsp.JspException: Cannot find bean showTKAForm in any scope
at org.apache.struts.taglib.TagUtils.lookup(TagUtils.java:934)
at org.apache.struts.taglib.logic.IterateTag.doStartTag(IterateTag.java:232)
at org.apache.jsp.jsp.showTKA_jsp._jspService(showTKA_jsp.java:89)
etc…………

Hemos verificado rutas y estan correctas. Parece que el problema esta en el iterate del jsp que muestra los datos pero despues de cambiarlo muchas veces nos sigue dando el mismo error.

Este error desaparece si ponemos anteriormente del iterate, el <logic:present name=\"showTKAForm\"> pero no nos muestra datos aunque si los tenga realmente.

Gracias de antemano.

 
Re: Problema de concepto de iterate y struts
Enviado por camus el día 2 de junio de 2006

Bueno pues toda parece estar bien , ajo de buen cubero, lo unico que yo note es que nunca guardas los valores de la forma te falta esta linea de código

request.setAttribute("showTKAForm",showTKAForm);

Me avisas si con esto se soluciono el problema si ya veremos ok?

Saludos

 
Re: Re: Problema de concepto de iterate y struts
Enviado por Yashiro el día 5 de junio de 2006

camus se supone que al dar submit los valores se cargan de forma automatica en el bean, por lo tanto no es necesario hacerlo de forma manual yo creo q el problema no va por ahi man

 
Re: Re: Re: Problema de concepto de iterate y struts
Enviado por nicokiki el día 5 de junio de 2006

Hola!!!!

Camus tiene razon en lo q dice.... si vos en tu "Action" no seteas por request, session, application tu form, desde la vista no los podes tomar. El problema q tiene es ese, y no por el submit....


Salu2!!!

 
Re: Re: Re: Re: Problema de concepto de iterate y struts
Enviado por Yashiro el día 5 de junio de 2006

Estoy de acuerdo en que no es por el submit, pero no es necesario cargar el bean a sesion, si checaron que tiene referenciado un bean en su <action...> </action> ?
<action
attribute=\"showTKAForm\"
name=\"showTKAForm\"
path=\"/showTKA\"
scope=\"request\"
type=\"libreria.struts.action.ShowTKAAction\"
validate=\"false\" />

si se fijan esta haciendo referencia a un bean el cual al submitear se llaman a los setters del bean y despues se carga automaticamente a session sin necesidad de hacerlo de forma manual o me equivoco?

 
Re: Re: Re: Re: Re: Problema de concepto de iterate y struts
Enviado por frodogus el día 6 de junio de 2006

De tanto tocar se ha arreglado pero nose porque. :)

Estoy intentando aprender pero esto es una movida.

 






Tienda
Patrocinados
 

Copyright © 1999-2006 Programación en castellano. Todos los derechos reservados.
Formulario de Contacto - Datos legales - Publicidad

Hospedaje web y servidores dedicados linux por Ferca Network