ClassCastException with @DataModel
texan Sep 1, 2006 12:02 PMI'm getting the following exception while using @DataModel with a h:dataTable component.
Note that without the "@Out" annotations, my dataTables were always empty. Maybe that in itself is a clue, but I don't know how to debug it further.
Also note that "document" is not null in my test case.
Is there a problem with more than one @DataModel in a bean?
Caused by: java.lang.ClassCastException: java.util.ArrayList at org.jboss.seam.databinding.DataModelBinder.isDirty(DataModelBinder.java:19) at org.jboss.seam.Component.outjectDataModelList(Component.java:973) at org.jboss.seam.Component.outjectDataModels(Component.java:937) at org.jboss.seam.Component.outject(Component.java:857) at org.jboss.seam.interceptors.BijectionInterceptor.bijectTargetComponent(BijectionInterceptor.java:41) at sun.reflect.GeneratedMethodAccessor650.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.jboss.seam.util.Reflections.invoke(Reflections.java:13) at org.jboss.seam.interceptors.Interceptor.aroundInvoke(Interceptor.java:90) at org.jboss.seam.interceptors.SeamInvocationContext.proceed(SeamInvocationContext.java:60) at org.jboss.seam.interceptors.ConversationInterceptor.endOrBeginLongRunningConversation(ConversationInterceptor.java:82) at sun.reflect.GeneratedMethodAccessor649.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.jboss.seam.util.Reflections.invoke(Reflections.java:13) at org.jboss.seam.interceptors.Interceptor.aroundInvoke(Interceptor.java:90) at org.jboss.seam.interceptors.SeamInvocationContext.proceed(SeamInvocationContext.java:60) at org.jboss.seam.interceptors.BusinessProcessInterceptor.manageBusinessProcessContext(BusinessProcessInterceptor.java:60) at sun.reflect.GeneratedMethodAccessor648.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.jboss.seam.util.Reflections.invoke(Reflections.java:13) at org.jboss.seam.interceptors.Interceptor.aroundInvoke(Interceptor.java:90) at org.jboss.seam.interceptors.SeamInvocationContext.proceed(SeamInvocationContext.java:60) at org.jboss.seam.interceptors.RemoveInterceptor.removeIfNecessary(RemoveInterceptor.java:39) at sun.reflect.GeneratedMethodAccessor647.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.jboss.seam.util.Reflections.invoke(Reflections.java:13) at org.jboss.seam.interceptors.Interceptor.aroundInvoke(Interceptor.java:90) at org.jboss.seam.interceptors.SeamInvocationContext.proceed(SeamInvocationContext.java:60) at org.jboss.seam.ejb.SeamInterceptor.aroundInvokeInContexts(SeamInterceptor.java:73) at org.jboss.seam.ejb.SeamInterceptor.aroundInvoke(SeamInterceptor.java:45) at sun.reflect.GeneratedMethodAccessor675.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.jboss.ejb3.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:118) at org.jboss.ejb3.interceptor.EJB3InterceptorsInterceptor.invoke(EJB3InterceptorsInterceptor.java:63) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) at org.jboss.ejb3.entity.TransactionScopedEntityManagerInterceptor.invoke(TransactionScopedEntityManagerInterceptor.java:54) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) at org.jboss.ejb3.AllowedOperationsInterceptor.invoke(AllowedOperationsInterceptor.java:47) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:79) ... 48 more
My Session Bean is:
@Name("viewDocument")
@Stateless
public class ViewDocumentAction implements ViewDocument {
@DataModel(value = "alerts")
@Out
private List alerts;
@DataModelSelection(value="alerts")
private Alert selectedAlert;
@DataModel(value = "docevents")
@Out
private List docevents;
@DataModelSelection(value="docevents")
private DocumentEvent selectedEvent;
@Out
private Document document;
@PersistenceContext
private EntityManager em;
@RequestParameter
private String documentId;
public String view() {
long id = StringUtility.parseLong(documentId);
document = em.find(Document.class, id);
if (document != null) {
// fetch alerts and events from db
document.getEvents().size();
document.getAlerts().size();
alerts = new ArrayList(document.getAlerts());
docevents = new ArrayList(document.getEvents());
}
return "/Document.xhtml";
}