Primefaces: java.lang.ClassCastException: java.util.HashMap cannot be cast to ClassObject
- by razegarra
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