Problema de concepto de iterate y struts

frodogus
06 de Junio del 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.

camus
06 de Junio del 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