Hola gente, estoy haciendo mi proyecto fin de carrera con JSP, Struts, JPA/Hibernate y Tomcat
Es una aplicación web para administrar un gimnasio, y quiero que el que maneje la aplicación pueda, al dar de alta un socio, seleccionar las clases que se puedan contratar.
El problema es que cuando pincho en cualquiera de los checkbox, al enviar los datos al servidor me da error.
El error es el siguiente:
------------------------------------------------------------------------------------------------------
javax.servlet.ServletException: BeanUtils.populate
org.apache.struts.util.RequestUtils.populate(Reque stUtils.java:495)
org.apache.struts.action.RequestProcessor.processP opulate(RequestProcessor.java:816)
org.apache.struts.action.RequestProcessor.process( RequestProcessor.java:203)
org.apache.struts.action.ActionServlet.process(Act ionServlet.java:1196)
org.apache.struts.action.ActionServlet.doPost(Acti onServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet .java:637)
javax.servlet.http.HttpServlet.service(HttpServlet .java:717)
org.displaytag.filter.ResponseOverrideFilter.doFil ter(ResponseOverrideFilter.java:125)
org.netbeans.modules.web.monitor.server.MonitorFil ter.doFilter(MonitorFilter.java:390)
root cause
java.lang.IllegalArgumentException: Cannot invoke Formularios.SocioForm.setSelectedOptions - argument type mismatch
org.apache.commons.beanutils.PropertyUtilsBean.inv okeMethod(PropertyUtilsBean.java:1778)
org.apache.commons.beanutils.PropertyUtilsBean.set SimpleProperty(PropertyUtilsBean.java:1759)
org.apache.commons.beanutils.PropertyUtilsBean.set NestedProperty(PropertyUtilsBean.java:1648)
org.apache.commons.beanutils.PropertyUtilsBean.set Property(PropertyUtilsBean.java:1677)
org.apache.commons.beanutils.BeanUtilsBean.setProp erty(BeanUtilsBean.java:1022)
org.apache.commons.beanutils.BeanUtilsBean.populat e(BeanUtilsBean.java:811)
org.apache.commons.beanutils.BeanUtils.populate(Be anUtils.java:298)
org.apache.struts.util.RequestUtils.populate(Reque stUtils.java:493)
org.apache.struts.action.RequestProcessor.processP opulate(RequestProcessor.java:816)
org.apache.struts.action.RequestProcessor.process( RequestProcessor.java:203)
org.apache.struts.action.ActionServlet.process(Act ionServlet.java:1196)
org.apache.struts.action.ActionServlet.doPost(Acti onServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet .java:637)
javax.servlet.http.HttpServlet.service(HttpServlet .java:717)
org.displaytag.filter.ResponseOverrideFilter.doFil ter(ResponseOverrideFilter.java:125)
org.netbeans.modules.web.monitor.server.MonitorFil ter.doFilter(MonitorFilter.java:390)
-------------------------------------------------------------------------------------------------------
Mi JSP:
--------------------------------------------
<label>Clases:</label>
<div id="multibox">
<logic:iterate name="SocioForm" id="item" property="possibleOptions">
<div id="casilla">
<html:multibox property="selectedOptions">
<bean:write name="item" />
</html:multibox>
<bean:write name="item" />
</div>
</logic:iterate>
</div>
------------------------------------------
Mi ActionForm
------------------------------------------
private List possibleOptions = load();
private List<String> selectedOptions = new ArrayList<String>();
private List load() {
FachadaClases fachada = new FachadaClases();
List clases = fachada.listarClases();
return clases;
}
public List getPossibleOptions() {
return possibleOptions;
}
public void setPossibleOptions(List possibleOptions) {
this.possibleOptions = possibleOptions;
}
public List<String> getSelectedOptions() {
return selectedOptions;
}
public void setSelectedOptions(List<String> selectedOptions) {
this.selectedOptions = selectedOptions;
}
-----------------------------------------------------------------------------------
Mi action que se ejecuta al enviar los datos al servidor:
----------------------------------------------------------------------------
List<Estadoclase> clases = fachadaclase.obtenerclases(socioForm.getSelectedOp tions());
float cuota = util.CalcularCuota(estadopack, descuento, clases);
Etapasocio socio = new Etapasocio(null, 1, fechaInicio, cuota, 100);
fachadaSocio.registrarSocio(persona, socio);
return mapping.findForward(SUCCESS);
-------------------------------------------------------------------------
Si necesitais algo más de código sólo decidlo
Saludos