Estoy realizando un proyecto web en J2EE con conexión a Base de Datos MySQL, y estoy comenzando a usar los UseBean.
Por una parte, tengo la clase Productos, con todos los campos encapsulados y en teoría todo correcto. ( Está dentro del paquete Modelo ).
Código JAVA:
Ver original
public class Productos { private int CodigoP; private int Stock; private double Precio; private double PrecioTotal; public Productos(){ } /** * @return the CodigoP */ public int getCodigoP() { return CodigoP; } /** * @param CodigoP the CodigoP to set */ public void setCodigoP(int CodigoP) { this.CodigoP = CodigoP; } /** * @return the Nombre */ return Nombre; } /** * @param Nombre the Nombre to set */ this.Nombre = Nombre; } /** * @return the Stock */ public int getStock() { return Stock; } /** * @param Stock the Stock to set */ public void setStock(int Stock) { this.Stock = Stock; } /** * @return the Precio */ public double getPrecio() { return Precio; } /** * @param Precio the Precio to set */ public void setPrecio(double Precio) { this.Precio = Precio; } /** * @return the PrecioTotal */ public double getPrecioTotal() { return PrecioTotal; } /** * @param PrecioTotal the PrecioTotal to set */ public void setPrecioTotal(double PrecioTotal) { this.PrecioTotal = PrecioTotal; } }
Por otro lado, dispongo de un archivo JSP que carga todos los productos que contiene la tabla PRODUCTOS de la Base de Datos, incluidas sus columnas.
Código JAVA:
Ver original
<table border="1"> <tr><td>Nombre</td><td>Precio</td><td>Cantidad</td><td>Precio Total</td></tr> <%for (int i=1;i<=st.getMaxRows();i++); {%> <tr> <%for (int j=1;j<=rs.getMetaData().getColumnCount();j++); { while (rs.next()) { try { Nombre = rs.getString("Nombre"); Cantidad = request.getParameter(Nombre); //Devuelve lo introducido en el textbox Precio = rs.getDouble("Precio"); Stock = rs.getInt("Stock"); Total+= PrecioTotal; System.out.println("CORRECTO Cantidad: " + Cantidad + " Nombre: " + Nombre + " Precio: " + Precio + " Stock: " + Stock + " Precio Total: " + PrecioTotal); %> <!--Los datos de las "tablas" a objetos --> <jsp:useBean id="<%=Nombre%>" class="Modelo.Productos"> <jsp:setProperty name="<%=Nombre%>" property="Stock" value="<%=CantidadBean%>"/> </jsp:useBean> <% System.out.println("ERROR Cantidad: " + Cantidad + " Nombre: " + Nombre + " Precio: " + Precio + " Stock: " + Stock + " Precio Total: " + PrecioTotal); } %> <td><%=Nombre%></td><td><%=Precio%></td><td><%=Cantidad%></td><td><%=PrecioTotal%></td></tr> <% //} } } } %> <tr><td colspan="3">TOTAL A PAGAR</td><td><%=Total%></td></tr> </table>
La idea, es que el UseBean guarde el valor CantidadBean, que convierte a Int su valor String, que recoge de otro archivo JSP ( de un textbox ) mediante request.getparameter.
La idea es que el UseBean cree tantos objetos como filas (productos) tenga la tabla.
El problema, es que al ejecutarlo, me salta el error:
Código JAVA:
Ver original
GRAVE: Servlet.service() for servlet [jsp] in context with path [/Septiembre] threw exception [No puedo encontrar información de la propiedad 'Stock' en un bean del tipo 'Modelo.Productos'] with root cause org.apache.jasper.JasperException: No puedo encontrar información de la propiedad 'Stock' en un bean del tipo 'Modelo.Productos'
Dicho error, me da a entender que el SetParameter de la Propiedad Stock...¿No recoge nada? (Corregidme si estoy equivocado ).
Código JAVA:
Ver original
<jsp:useBean id="<%=Nombre%>" class="Modelo.Productos"> <jsp:setProperty name="<%=Nombre%>" property="Stock" value="<%=CantidadBean%>"/> </jsp:useBean>
Por lo que intuyo, es que el error, se encuentra en el atributo value. Por eso me gustaría que le echáseis un vistazo, a ver si lográis comprender la causa del error y alguna posible solución.
Gracias :)