If the source for a grid is a collection which has a generic type of an abstract class and the list contains concrete classes which are not all of the same subclass then it throws:

Render queue error in BeginRender[SearchByTag:grid_0.rows.gridcell]: ConcreteB cannot be cast to ConcreteA


Is this a bug? It certainly seems that way to me; at the very least it seems a deficiency.

Suggestions for a workaround? (my guess is to create another class which will hold all the values I want to display, then copy everything from my list of abstract-derived classes into a list of this new class - how incredibly ugly. Surely there must be a better way?)

Template fragment:

        <t:grid t:source="conList">
        </t:grid>


Code fragments:

        @Property
        @Persist
        private List<AbstractClass> conList;

 // this doesn't work:
                        conList = new ArrayList<AbstractClass>();
                        conList.add(new ConcreteA());
                        conList.add(new ConcreteA());
                        conList.add(new ConcreteB());

 // this does work:
                        conList = new ArrayList<AbstractClass>();
                        conList.add(new ConcreteA());
                        conList.add(new ConcreteA());
                        conList.add(new ConcreteA());



public class ConcreteA extends AbstractClass
{
}

public class ConcreteB extends AbstractClass
{
}

public abstract class AbstractClass
{
        private String a;
        private String b;


        public String getA()
        {
                return "I am A";
        }
        public void setA(String a)
        {
                this.a = a;
        }
        public String getB()
        {
                return "I am B";
        }
        public void setB(String b)
        {
                this.b = b;
        }


}



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to