Primefaces: java.lang.ClassCastException: java.util.HashMap cannot be cast to ClassObject

Posted by razegarra on Stack Overflow See other posts from Stack Overflow or by razegarra
Published on 2014-05-29T21:45:52Z Indexed on 2014/05/30 3:26 UTC
Read the original article Hit count: 1978

Filed under:
|
|
|

I have a problem with p:dataTable in Primefaces, I can not find the error.

Class UsuarioAsig:

public class UsuarioAsig {

private BigDecimal codigopersona;
private String nombre;
private String paterno;
private String materno;
private String login;
private String observacion;
private String tipocontrol;
private String externo;
private String habilitado;
private String nombreperfil;
private BigDecimal codigousuario;  ...get and set...}

Class UsuarioAsigListaDataModel:

public class UsuarioAsigListaDataModel  extends ListDataModel<UsuarioAsig> implements SelectableDataModel<UsuarioAsig> {
public UsuarioAsigListaDataModel(){}
public UsuarioAsigListaDataModel(List<UsuarioAsig> data){super(data);}
@Override
public UsuarioAsig getRowData(String rowKey) {
    @SuppressWarnings("unchecked")
    List<UsuarioAsig> listaUsuarioAsigLectura = (List<UsuarioAsig>) getWrappedData();
    for (UsuarioAsig usuarioAsig : listaUsuarioAsigLectura) {
        if (usuarioAsig.getCodigopersona().equals(rowKey)) { return usuarioAsig; }
    }
    return null;
}
@Override
public Object getRowKey(UsuarioAsig usuarioAsig) {
    return usuarioAsig.getCodigopersona();
}}

Controller UsuarioAsigController:

    @Controller("usuarioAsigController")
@Scope(value = "session")
public class UsuarioAsigController {

    private List<UsuarioAsig> listaUsuarioAsig;
    private HashMap<String, Object> selUsuarioAsig;
    private UsuarioAsigListaDataModel mediumUsuarioAsigModel;
    @Autowired
    UsuarioService usuarioService;

    ...

    public List<UsuarioAsig> getListaUsuarioAsig() {
        listaUsuarioAsig = usuarioService.selectAsig();
        return listaUsuarioAsig;
    }

    public void setListaUsuarioAsig(List<UsuarioAsig> listaUsuarioAsig) {
        this.listaUsuarioAsig = listaUsuarioAsig;
    }

    public void setMediumUsuarioAsigModel(UsuarioAsigListaDataModel mediumUsuarioAsigModel) {
        this.mediumUsuarioAsigModel = mediumUsuarioAsigModel;
    }

    public UsuarioAsigListaDataModel getMediumUsuarioAsigModel() {
        listaUsuarioAsig = usuarioService.selectAsig();
        mediumUsuarioAsigModel = new UsuarioAsigListaDataModel(listaUsuarioAsig);
        return mediumUsuarioAsigModel;
    }

    public void onRowSelect(SelectEvent event) {
        FacesMessage msg = new FacesMessage("Usuario seleccionado", ((UsuarioAsig) event.getObject()).getNombre());
        FacesContext.getCurrentInstance().addMessage(null, msg);
    }
}

the error is generated when you click on one of the lines of datatable:

asiginst.xhtml:

<h:form id="form">
    <p:growl id="msgs" showDetail="true" />

    <p:dataTable id="usuarioAsigListaDataModel" var="usuarioAsig"
        value="#{usuarioAsigController.mediumUsuarioAsigModel}"
        rowKey="#{usuarioAsig.codigopersona}"
        selection="#{usuarioAsigController.selUsuarioAsig}"
        selectionMode="single" paginator="true" rows="10">
        <p:ajax event="rowSelect"
            listener="#{usuarioAsigController.onRowSelect}"
            update=":form:msgs" />
        <p:column headerText="Código" style="width:10%">#{usuarioAsig.codigopersona}</p:column>
        <p:column headerText="Nombre" style="width:32%">#{usuarioAsig.nombre}</p:column>
        <p:column headerText="Apellidos" style="width:32%">#{usuarioAsig.paterno} #{usuarioasig.materno}</p:column>
        <p:column headerText="Tipo Control" style="width:20%">#{usuarioAsig.tipocontrol}</p:column>
        <p:column headerText="Habilitado" style="width:6%">#{usuarioAsig.habilitado}</p:column>
    </p:dataTable>
</h:form>

THE ERROR IS GENERATED:

    WARNING: asiginst.xhtml @51,103 listener="#{usuarioAsigController.onRowSelect}": java.lang.ClassCastException: java.util.HashMap cannot be cast to com.datos.entidades.qry.UsuarioAsig
javax.el.ELException: asiginst.xhtml @51,103 listener="#{usuarioAsigController.onRowSelect}": java.lang.ClassCastException: java.util.HashMap cannot be cast to com.datos.entidades.qry.UsuarioAsig
    at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:111)
    at org.primefaces.behavior.ajax.AjaxBehaviorListenerImpl.processArgListener(AjaxBehaviorListenerImpl.java:69)
    at org.primefaces.behavior.ajax.AjaxBehaviorListenerImpl.processAjaxBehavior(AjaxBehaviorListenerImpl.java:56)
    at org.primefaces.event.SelectEvent.processListener(SelectEvent.java:40)
    at javax.faces.component.behavior.BehaviorBase.broadcast(BehaviorBase.java:102)
    at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:760)
    at javax.faces.component.UIData.broadcast(UIData.java:1071)
    at javax.faces.component.UIData.broadcast(UIData.java:1093)
    at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794)
    at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259)
    at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
    at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:409)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at java.lang.Thread.run(Thread.java:722)
Caused by: java.lang.ClassCastException: java.util.HashMap cannot be cast to com.datos.entidades.qry.UsuarioAsig
    at com.controller.UsuarioAsigController.onRowSelect(UsuarioAsigController.java:217)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at org.apache.el.parser.AstValue.invoke(AstValue.java:264)
    at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:278)
    at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
    ... 29 more

© Stack Overflow or respective owner

Related posts about java

Related posts about jsf