Hola, buen día!
Estoy trabajando en un proyecto, en el cual necesito mostrar un catálogo de elementos, es decir, una lista. Debido a que es un abc, debo poder seleccionar varios de los elementos mostrados. Para ello utilizo un checkbox que me permita seleccionarlos. Por lo tanto, necesito una variable que me permita almacenar un arreglo de elementos seleccionados para que pueda trabajar con ellos.
El problema que se me presenta es, justamente, cuando le agrego la variable donde debe almacenar esos elementos. Defino una variable llamada "gruposEstadisticoId", de tipo java.lang.Integer[] (o sea, un arreglo), la cual almacenará los items elegidos, en este caso, los "grupoElementoId". A la variable arreglo, la asigno al selecName, pero al hacer esto y acceder a la página me genera un error del un índice fuera de rango. El error lo muestro abajo. (Error 1)
Haciendo pruebas, utilicé la propiedad selecIndex, asignándole "gruposEstadisticoId". Con ello, logro ver la página y elegir los elementos que necesito, pero cuando le doy el "submit", me marca un error de que no está definido un elemento index. El error está al final (Error 2).
Si alguien puede apoyarme para solucionarlo, se lo agradecería.
Agrego configuración de mi struts-config.xml y .jsp para brindar una visión más completa.
*** My struts-config.xml tiene lo siguiente: ****
<form-bean name="GrupoEstadisticoForm" type="org.apache.struts.action.DynaActionForm">
<form-property name="whatNext" type="java.lang.String"/>
<form-property name="gruposEstadisticoId" type="java.lang.Integer[]"/>
<form-property name="grupoEstadisticoId" type="java.lang.Integer"/>
<form-property name="grupoEstadisticoDescripcion" type="java.lang.String"/>
<form-property name="productosId" type="java.lang.Integer[]"/>
<form-property name="productoId" type="java.lang.Integer"/>
<form-property name="productoDescripcion" type="java.lang.String"/>
</form-bean>
*** Mi jsp utiliza lo siguiente: ***
<layout:pager sessionPagerId="paginaGrupo" align="center" maxPageItems="10"> <layout:collection name="catalogoGrupo" title="" styleClass="celdaFondoClaro" styleClass2="celdaFondoOscuro" align="center" sortAction="client" selectName="gruposEstadisticoId" selectProperty="grupoEstadisticoId" selectType="checkbox">
<layout:collectionItem title="Id" property="grupoEstadisticoId"></layout:collectionItem>
<layout:collectionItem title="Descripcion" property="grupoEstadisticoDescripcion"></layout:collectionItem>
</layout:collection>
</layout:pager>
*** Y el error 1 generado con el selecName es el siguiente:***
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException
org.apache.jasper.servlet.JspServletWrapper.handle JspException(JspServletWrapper.java:510)
org.apache.jasper.servlet.JspServletWrapper.servic e(JspServletWrapper.java:393)
org.apache.jasper.servlet.JspServlet.serviceJspFil e(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspSe rvlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet .java:810)
org.apache.struts.action.RequestProcessor.doForwar d(RequestProcessor.java:1069)
org.apache.struts.action.RequestProcessor.processF orwardConfig(RequestProcessor.java:455)
org.apache.struts.action.RequestProcessor.process( RequestProcessor.java:279)
org.apache.struts.action.ActionServlet.process(Act ionServlet.java:1482)
org.apache.struts.action.ActionServlet.doGet(Actio nServlet.java:507)
javax.servlet.http.HttpServlet.service(HttpServlet .java:697)
javax.servlet.http.HttpServlet.service(HttpServlet .java:810)
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doF ilter(ReplyHeaderFilter.java:96)
root cause
java.lang.ArrayIndexOutOfBoundsException
java.lang.reflect.Array.get(Native Method)
org.apache.struts.action.DynaActionForm.get(DynaAc tionForm.java:296)
org.apache.commons.beanutils.PropertyUtils.getInde xedProperty(PropertyUtils.java:474)
org.apache.commons.beanutils.PropertyUtils.getInde xedProperty(PropertyUtils.java:428)
org.apache.commons.beanutils.PropertyUtils.getNest edProperty(PropertyUtils.java:770)
org.apache.commons.beanutils.PropertyUtils.getProp erty(PropertyUtils.java:801)
fr.improve.struts.taglib.layout.util.LayoutUtils.g etBeanFromPageContext(LayoutUtils.java:210)
fr.improve.struts.taglib.layout.collection.Collect ionTag.isCurrentBeanSelected(CollectionTag.java:52 5)
fr.improve.struts.taglib.layout.collection.Collect ionTag.renderSelection(CollectionTag.java:491)
fr.improve.struts.taglib.layout.collection.Collect ionTag.renderItem(CollectionTag.java:436)
fr.improve.struts.taglib.layout.collection.Collect ionTag.addItem(CollectionTag.java:151)
fr.improve.struts.taglib.layout.collection.BaseCol lectionTag.addItem(BaseCollectionTag.java:312)
fr.improve.struts.taglib.layout.collection.FastCol lectionItemTag.doEndLayoutTag(FastCollectionItemTa g.java:177)
fr.improve.struts.taglib.layout.LayoutTagSupport.d oEndTag(LayoutTagSupport.java:47)
org.apache.jsp.catalogoGrupoEstadistico_jsp._jspx_ meth_layout_collectionItem_0(catalogoGrupoEstadist ico_jsp.java:604)
org.apache.jsp.catalogoGrupoEstadistico_jsp._jspx_ meth_layout_collection_0(catalogoGrupoEstadistico_ jsp.java:569)
org.apache.jsp.catalogoGrupoEstadistico_jsp._jspx_ meth_layout_pager_0(catalogoGrupoEstadistico_jsp.j ava:525)
org.apache.jsp.catalogoGrupoEstadistico_jsp._jspx_ meth_html_form_0(catalogoGrupoEstadistico_jsp.java :299)
org.apache.jsp.catalogoGrupoEstadistico_jsp._jspx_ meth_html_html_0(catalogoGrupoEstadistico_jsp.java :163)
org.apache.jsp.catalogoGrupoEstadistico_jsp._jspSe rvice(catalogoGrupoEstadistico_jsp.java:93)
org.apache.jasper.runtime.HttpJspBase.service(Http JspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet .java:810)
org.apache.jasper.servlet.JspServletWrapper.servic e(JspServletWrapper.java:332)
org.apache.jasper.servlet.JspServlet.serviceJspFil e(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspSe rvlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet .java:810)
org.apache.struts.action.RequestProcessor.doForwar d(RequestProcessor.java:1069)
org.apache.struts.action.RequestProcessor.processF orwardConfig(RequestProcessor.java:455)
org.apache.struts.action.RequestProcessor.process( RequestProcessor.java:279)
org.apache.struts.action.ActionServlet.process(Act ionServlet.java:1482)
org.apache.struts.action.ActionServlet.doGet(Actio nServlet.java:507)
javax.servlet.http.HttpServlet.service(HttpServlet .java:697)
javax.servlet.http.HttpServlet.service(HttpServlet .java:810)
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doF ilter(ReplyHeaderFilter.java:96)
note The full stack trace of the root cause is available in the Apache Tomcat/5.5.17 logs.
*** El error 2 generado con el selecIndex es el siguiente: ***
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: BeanUtils.populate
org.apache.struts.util.RequestUtils.populate(Reque stUtils.java:1254)
org.apache.struts.action.RequestProcessor.processP opulate(RequestProcessor.java:821)
org.apache.struts.action.RequestProcessor.process( RequestProcessor.java:254)
org.apache.struts.action.ActionServlet.process(Act ionServlet.java:1482)
org.apache.struts.action.ActionServlet.doPost(Acti onServlet.java:525)
javax.servlet.http.HttpServlet.service(HttpServlet .java:717)
javax.servlet.http.HttpServlet.service(HttpServlet .java:810)
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doF ilter(ReplyHeaderFilter.java:96)
root cause
java.lang.NullPointerException: No indexed value for 'grupoEstadisticoId[0]'
org.apache.struts.action.DynaActionForm.get(DynaAc tionForm.java:293)
org.apache.commons.beanutils.PropertyUtils.getInde xedProperty(PropertyUtils.java:474)
org.apache.commons.beanutils.PropertyUtils.getInde xedProperty(PropertyUtils.java:428)
org.apache.commons.beanutils.PropertyUtils.getNest edProperty(PropertyUtils.java:770)
org.apache.commons.beanutils.PropertyUtils.getProp erty(PropertyUtils.java:801)
org.apache.commons.beanutils.BeanUtils.setProperty (BeanUtils.java:881)
org.apache.commons.beanutils.BeanUtils.populate(Be anUtils.java:808)
org.apache.struts.util.RequestUtils.populate(Reque stUtils.java:1252)
org.apache.struts.action.RequestProcessor.processP opulate(RequestProcessor.java:821)
org.apache.struts.action.RequestProcessor.process( RequestProcessor.java:254)
org.apache.struts.action.ActionServlet.process(Act ionServlet.java:1482)
org.apache.struts.action.ActionServlet.doPost(Acti onServlet.java:525)
javax.servlet.http.HttpServlet.service(HttpServlet .java:717)
javax.servlet.http.HttpServlet.service(HttpServlet .java:810)
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doF ilter(ReplyHeaderFilter.java:96)
note The full stack trace of the root cause is available in the Apache Tomcat/5.5.17 logs.