Problemas con RitchFaces PickList

294 views
Skip to first unread message

Juan Manuel Lopez

unread,
Dec 16, 2009, 5:53:13 PM12/16/09
to jav...@googlegroups.com
Hola gente como estan ????

Tengo un problema querer ejecutar mi pagina el picklist al parecer no me funciona el componente correctamente me informa un error de


ar.com.sibs.sca.pagos.beans.EntidadRol cannot be cast to javax.faces.model.SelectItem


con este strack trace------------------------------->

java.lang.ClassCastException: ar.com.sibs.sca.pagos.beans.EntidadRol cannot be cast to javax.faces.model.SelectItem
at org.richfaces.renderkit.PickListRenderer.getConvertedItems(PickListRenderer.java:514)
at org.richfaces.renderkit.html.PickListRendererGen.doEncodeChildren(PickListRendererGen.java:283)
at org.richfaces.renderkit.html.PickListRendererGen.doEncodeChildren(PickListRendererGen.java:264)
at org.ajax4jsf.renderkit.RendererBase.encodeChildren(RendererBase.java:120)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:837)
at org.ajax4jsf.renderkit.RendererBase.renderChild(RendererBase.java:277)
at org.ajax4jsf.renderkit.RendererBase.renderChildren(RendererBase.java:258)
at org.richfaces.renderkit.html.PanelRenderer.doEncodeChildren(PanelRenderer.java:200)
at org.richfaces.renderkit.html.PanelRenderer.doEncodeChildren(PanelRenderer.java:195)
at org.ajax4jsf.renderkit.RendererBase.encodeChildren(RendererBase.java:120)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:837)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:930)
at javax.faces.render.Renderer.encodeChildren(Renderer.java:148)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:837)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:930)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:933)
at com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:592)
at org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:100)
at org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:176)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:110)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:266)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)
at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:81)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.jboss.web.tomcat.security.CustomPrincipalValve.invoke(CustomPrincipalValve.java:39)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:159)
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:59)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112)
at java.lang.Thread.run(Thread.java:619)


asi tengo configurado mi pick list

        <rich:pickList value="#{configurarEntidadesParaExcedente.entidadesRolSinExcedentes}" showButtonsLabel="false" >
            <f:selectItems value="#{configurarEntidadesParaExcedente.entidadesRolConExcedentes}" />
        </rich:pickList>

y esta es mi codigo java donde optengo la lista


    private List<EntidadRol> entidadesRolSinExcedentes = new ArrayList<EntidadRol>();
    private List<EntidadRol> entidadesRolConExcedentes = new ArrayList<EntidadRol>();
    private ArrayList<EntidadExcedentes> operarListaEntRolConExcedentes = null;
    private ArrayList<EntidadExcedentes> operarListaEntRolSinExcedentes = null;
    private static short PAGAEXCEDENTE = 1;
    private static short NOPAGAEXCEDENTE = 0;

    @SuppressWarnings("unchecked")
    public List<EntidadRol> getEntidadesRolSinExcedentes() {
        log.info("ConfigurarEntidadesPagoExcedente::getEntidadesRolSinExcedentes");

        // Lista de Entidades - Roles
        ArrayList<EntidadRol> entidadesRoles = (ArrayList<EntidadRol>) this
                .getFacade().getEntidadesRol();
        // Lista de Entidades - Roles a modificar
        entidadesRolSinExcedentes = (ArrayList<EntidadRol>) entidadesRoles
                .clone();

        // Lista de EntidadesRoles con pagoPorExcedente
        List<EntidadExcedentes> entidadesRolPagoConExcedente = this.getFacade()
                .getEntidadesRolConExcedente();

        //Si no poseo entidades-rol con excedente mi lista sin excedente es mi lista completa de entidad-rol
        if (!entidadesRolPagoConExcedente.isEmpty()) {
            // Filtro todas las entidades rol no tiene pago por excedente
            for (EntidadRol entidadRol : entidadesRoles) {
                for (EntidadExcedentes entidadExcedentes : entidadesRolPagoConExcedente) {
                    // Comparo por codigoEntidad y codigoRol
                    if (entidadRol.getCodigoentidad().getCodigoentidad()
                            .equals(entidadExcedentes.getCodigoEntidadPago())
                            && entidadRol.getCodigorol().getCodigorol().equals(
                                    entidadExcedentes.getCodigoRolPago())) {
                        entidadesRolSinExcedentes.remove(entidadRol);
                    }
                }
            }
        }
        return entidadesRolSinExcedentes;
    }

    /**
     *
     * @return
     */
    public List<EntidadRol> getEntidadesRolConExcedentes() {
        log
                .info("ConfigurarEntidadesPagoExcedente::getEntidadesRolConExcedentes");
        ArrayList<EntidadRol> entidadesRoles = (ArrayList<EntidadRol>) this
                .getFacade().getEntidadesRol();
        entidadesRoles.removeAll(entidadesRolSinExcedentes);
       
        entidadesRolConExcedentes = (List<EntidadRol>) entidadesRoles.clone();
        log.info(" dato entidadesRoles" + entidadesRolConExcedentes.toString());
        return entidadesRolConExcedentes;
    }
***************************** Esto continua




Desde ya gracias cualquier comentario, ya que en internet o lo que encontre pick list tendria que funcionar tranquilamente , talves puede ser que este componente no me reconozca el objeto que yo quiero mostrar si no que solo acepte List de String .


Desde ya cualquier respuesta sera agradecida

Saludos Cordiales
Juan Manuel Lopez




Pablo Saavedra

unread,
Dec 16, 2009, 6:59:54 PM12/16/09
to jav...@googlegroups.com
El problema es que estás devolviendo una lista de EntidadRol, cuando lo que espera el componente (f:selectItems) es o una lista de SelectItem o un mapa (la clave es el value y el valor el label de cada <option>, o al reves).

La otra es que uses un f:selectItem

<f:selectItems label="#{entidad.valor}" value="#{entidad.nombre}"/>

Pero no se como engancharia con el pickList.

Saludos.

2009/12/16 Juan Manuel Lopez <juan.l...@gmail.com>




--
www.JavaSOS.com
Grupo de colaboración Java/J2ee para desarrolladores de habla hispana.

federico candia

unread,
Dec 16, 2009, 8:28:43 PM12/16/09
to jav...@googlegroups.com
podrias usar un converter de select items a EntidadRol

<rich:pickList value="#{configurarEntidadesParaExcedente.entidadesRolSinExcedentes}" showButtonsLabel="false" >
            <f:selectItems value="#{configurarEntidadesParaExcedente.entidadesRolConExcedentes}" />
           <f:converter converterId="EntidadRolConverter" />
  </rich:pickList>

Juan Manuel Lopez

unread,
Dec 17, 2009, 6:28:30 PM12/17/09
to jav...@googlegroups.com, Alejandro Assi
Hola uqe tal pude conseguir resolverlo eh convertido mi entidad Rol a un tipo SelectItem pero ahroa lo que no logro es poder meter datos precargado a la segunda lista

osea a la lista donde se mueven los uqe seleccione de la primera no los logro cargar apenas comienze la pantalla

yo pense que la el value del picklist se refereia a la primera lista y luego que selecItems se referia a la lista que  target para llamarlo de una manera pero bueno no lo logro alguien sabria como hacerlo ?

y otra consulta por lo visto los elementos de la segunda lista osea los qee corre de la primera a la segunda cuando le acciono mi boton guardar me llegan en formato de una lista de String si estoy en lo correcto el cual contiene una la calve de mi objeto que puse en la lista principal, pero al momento de llamarlo con el set solo lo puedo invocar de esta manera setMyBean(List<SelectItem> listaTarget) por que si lo pongo en formato setMyBean(List<String> listaTarget) me informa una error relacionado al servlet :S

Desde ya muchas gracias por larespuestas anteriores
Reply all
Reply to author
Forward
0 new messages