You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by Szemere Szemere <sz...@gmail.com> on 2012/02/03 17:44:21 UTC
Grid cast class exception
I'm getting a strange cast class exception with the grid component, along
the lines of:
Render queue error in BeginRender[admin/WidgetList:grid.rows.gridcell]:
com.companyname.data.Widget cannot be cast to
com.companyname.data.Widget_$$_javassist_0
The code is simple and clean and I don't get it elsewhere, so I'm puzzled.
Any ideas of where to look?
The code is similar to the following (names changed to protect the
innocent):
tml includes:
<t:grid t:pagerPosition="both"
source="widgetList"
row="widgetLoop"
rowsPerPage="50" >
<t:parameter name="nameCell">
<t:pagelink page="admin/stuff/WidgetEdit"
context="widgetLoop.id">
${widgetLoop.name}
</t:pagelink>
</t:parameter>
</t:grid>
.java:
package com.companyname.web.pages.admin;
import java.util.List;
import org.apache.tapestry5.annotations.Property;
import org.apache.tapestry5.ioc.annotations.Inject;
import org.hibernate.Session;
import com.companyname.data.Widget;
import com.companyname.web.pages.SecuredPage;
public class WidgetList extends SecuredPage {
@Inject private Session session;
@Property List<Widget> widgets;
/**
* stores current group for loop usage
*/
@Property private Widget widgetLoop;
void onActivate(Object[] context) {
//no-op
}
@SuppressWarnings("unchecked")
void setupRender() {
widgets = (List<Widget>)
session.createCriteria(Widget.class).list();
}
public List<Widget> getWidgetList() {
return widgets;
}
}
package com.companyname.data;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashSet;
import java.util.Set;
public class Widget {
public static final String USEFUL_NAME = "help";
private Long id;
private String name;
private Set<Item> items = new HashSet<Item>();
private Date createdDate;
private String description;
public Widget() {
//if this is a persistent instance, then the createdDate will be
//recovered from the DB and set post-constructor
createdDate = new GregorianCalendar().getTime();
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Set<Item> getItems() {
return items;
}
public void setItems(Set<Item> items) {
this.items = items;
}
public Date getCreatedDate() {
return createdDate;
}
public void setCreatedDate(Date createdDate) {
this.createdDate = createdDate;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}
Re: Grid cast class exception
Posted by "Thiago H. de Paula Figueiredo" <th...@gmail.com>.
Try providing the BeanModel explicitly using the Grid's model parameter
and BeanModelSource.
On Fri, 03 Feb 2012 14:44:21 -0200, Szemere Szemere
<sz...@gmail.com> wrote:
> I'm getting a strange cast class exception with the grid component, along
> the lines of:
> Render queue error in BeginRender[admin/WidgetList:grid.rows.gridcell]:
> com.companyname.data.Widget cannot be cast to
> com.companyname.data.Widget_$$_javassist_0
>
> The code is simple and clean and I don't get it elsewhere, so I'm
> puzzled.
> Any ideas of where to look?
>
> The code is similar to the following (names changed to protect the
> innocent):
>
> tml includes:
> <t:grid t:pagerPosition="both"
> source="widgetList"
> row="widgetLoop"
> rowsPerPage="50" >
>
> <t:parameter name="nameCell">
> <t:pagelink page="admin/stuff/WidgetEdit"
> context="widgetLoop.id">
> ${widgetLoop.name}
> </t:pagelink>
> </t:parameter>
>
> </t:grid>
>
> .java:
> package com.companyname.web.pages.admin;
>
> import java.util.List;
>
> import org.apache.tapestry5.annotations.Property;
> import org.apache.tapestry5.ioc.annotations.Inject;
> import org.hibernate.Session;
>
> import com.companyname.data.Widget;
> import com.companyname.web.pages.SecuredPage;
>
> public class WidgetList extends SecuredPage {
> @Inject private Session session;
>
> @Property List<Widget> widgets;
> /**
> * stores current group for loop usage
> */
> @Property private Widget widgetLoop;
>
> void onActivate(Object[] context) {
> //no-op
> }
>
> @SuppressWarnings("unchecked")
> void setupRender() {
> widgets = (List<Widget>)
> session.createCriteria(Widget.class).list();
> }
>
> public List<Widget> getWidgetList() {
> return widgets;
> }
> }
>
> package com.companyname.data;
>
> import java.util.Date;
> import java.util.GregorianCalendar;
> import java.util.HashSet;
> import java.util.Set;
>
> public class Widget {
> public static final String USEFUL_NAME = "help";
>
> private Long id;
> private String name;
> private Set<Item> items = new HashSet<Item>();
> private Date createdDate;
> private String description;
>
> public Widget() {
> //if this is a persistent instance, then the createdDate will be
> //recovered from the DB and set post-constructor
> createdDate = new GregorianCalendar().getTime();
> }
>
> public Long getId() {
> return id;
> }
>
> public void setId(Long id) {
> this.id = id;
> }
>
> public String getName() {
> return name;
> }
>
> public void setName(String name) {
> this.name = name;
> }
>
> public Set<Item> getItems() {
> return items;
> }
>
> public void setItems(Set<Item> items) {
> this.items = items;
> }
>
> public Date getCreatedDate() {
> return createdDate;
> }
>
> public void setCreatedDate(Date createdDate) {
> this.createdDate = createdDate;
> }
>
> public String getDescription() {
> return description;
> }
>
> public void setDescription(String description) {
> this.description = description;
> }
> }
--
Thiago H. de Paula Figueiredo
Independent Java, Apache Tapestry 5 and Hibernate consultant, developer,
and instructor
Owner, Ars Machina Tecnologia da Informação Ltda.
Consultor, desenvolvedor e instrutor em Java, Tapestry e Hibernate
http://www.arsmachina.com.br
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org