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:
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>
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.
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?
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....
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?