Saludos:
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 originalpublic 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
*/
public void setNombre
(String Nombre
) { 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
CantidadBean
= Integer.
parseInt(Cantidad
); Precio = rs.getDouble("Precio");
Stock = rs.getInt("Stock");
PrecioTotal
= Integer.
parseInt(Cantidad
) * Precio
; 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(e.
getMessage()); 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 originalGRAVE: 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 :)