first, the jsp (sorry for the spanish comments):
<%@ taglib prefix="logic" uri="/WEB-INF/struts-logic.tld" %> <%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %> <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> <head> <title>Example of a Bean Based Purchase Order</title> </head> <h1>Example of a Bean Based Purchase Order</h1>
<html:form action="/generateBeanPO">
<TABLE WIDTH="80%" BORDER="1">
<TR><TH align="left">Part Number</TH>
<TH align="left">Quantity</TH>
<TH align="left">Price</TH></TR>
<!-- watch out with the id, en the form bean there must be a method related to it -->
<logic:iterate id="linea" name="purchaseOrderBeanForm" property="lines">
<TR><TD><html:text indexed="true" name="linea" property="partNumber"/></TD>
<TD><html:text indexed="true" name="linea" property="quantity"/></TD>
<TD><html:text indexed="true" name="linea" property="price"/></TD></TR>
</logic:iterate>
</table>
<html:hidden property="accion" value="capturado"/>
<html:submit/>
</html:form>
now in the ActionForm package org.hospital;
import org.apache.struts.action.*;
import java.util.ArrayList;
public class PurchaseOrderBeanForm extends ActionForm { /**
* Propiedad Lines.
* Almacena todo el conjunto de lineas
*/
private ArrayList lines = null;
/** * Devuelve el valor de la propiedad lines . * [EMAIL PROTECTED] El valor actual de Lines */ public ArrayList getLines() { return this.lines; }
/** * Establece el nuevo valor para la propiedad lines . * [EMAIL PROTECTED] lines El nuevo valor para lines . */ public void setLines(ArrayList lines) { this.lines = lines; }
/** * Returns an linea object from the lines ArrayList. * It is related to the linea property in the jsp * <logic:iterate> * [EMAIL PROTECTED] El valor actual de Linea */
public POLine getLinea(int index) {
return (POLine)this.lines.get(index);
}
/** * Establece el nuevo valor para la propiedad linea. * [EMAIL PROTECTED] lines El nuevo valor para linea. */ public void setLinea(int index, POLine valor) { this.lines.add(index, valor); }
/**
* Propiedad Accion.
*/
private String accion = null;
/** * Devuelve el valor de la propiedad accion . * [EMAIL PROTECTED] El valor actual de Accion */ public String getAccion() { return this.accion; }
/** * Establece el nuevo valor para la propiedad accion . * [EMAIL PROTECTED] accion El nuevo valor para accion . */ public void setAccion(String accion) { this.accion = accion; } }
the POLine object:
package org.hospital;
public class POLine { private String partNumber; private String quantity; private String price; private double total;
public String getPartNumber() {
return partNumber;
} public void setPartNumber(String partNumber) {
this.partNumber = partNumber;
} public String getQuantity() {
return quantity;
} public void setQuantity(String quantity) {
this.quantity = quantity;
} public String getPrice() {
return price;
} public void setPrice(String price) {
this.price = price;
} public double getTotal() {
return total;
} public void setTotal(double total) {
this.total = total;
}
}
The Action:
import org.apache.struts.action.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.ServletException; import java.io.IOException; import java.util.ArrayList;
public class GenerateBeanPO extends Action {
String mapeo = "inicializa";
public ActionForward execute(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException { PurchaseOrderBeanForm poForm = (PurchaseOrderBeanForm) form;
ArrayList lines = new ArrayList();
System.out.println("**** Estoy en GenerateBeanPO ******");
//llenamos el ArrayList
if(poForm.getAccion() == null) {
for(int i = 0; i < 10; i++) {
POLine linea = new POLine();
linea.setPartNumber(String.valueOf(i));
lines.add(linea);
}
poForm.setLines(lines);
mapeo = "inicializa";
} else {
try {
//recover ArrayList
ArrayList lineas = poForm.getLines(); //and show it
for (int i = 0; i < lineas.size(); i++) {
POLine linea = (POLine)lineas.get(i);
System.out.println("***********************"); System.out.println("Articulo: " + linea.getPartNumber()); System.out.println("Cantidad: " + linea.getQuantity()); System.out.println("Precio: " + linea.getPrice()); System.out.println("***********************\n"); }
}catch (Exception e) {
System.out.println("***** Error >>>>>>>>");
e.printStackTrace();
}
mapeo = "success";
}
return mapping.findForward(mapeo);
}
}
and last, the relevant struts-config.xml parts: .... <form-bean name="purchaseOrderBeanForm" type="org.hospital.PurchaseOrderBeanForm"/> ....
<action path="/generateBeanPO"
type="org.hospital.GenerateBeanPO"
name="purchaseOrderBeanForm"
input="/purchaseOrderBean.jsp">
<forward name="success"
path="/purchaseOrderBean.jsp"
redirect="false"/>
<forward name="inicializa"
path="/purchaseOrderBean.jsp"
redirect="false"/>
</action>hope this helps
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]

