Not to be harsh, but I don't think I've ever written a select box with
constant values (Enum).  Seems like even Male/Female drop downs need to
be data-driven now-a-days.  :->

I've started to stub out a very simple "real world example" of a select
component in T5, but it doesn't appear to be as simple as I thought it
would be.  

A shiny nickel to anyone that can spot the flaw, because I sure can't...
I'm new to Tapestry in general so I could be missing something really
mundane here, but seems like it should work in my mind.

Here are the players:

<< THE ERROR >>

[ERROR] DefaultRequestExceptionHandler Processing of request failed with
uncaught exception: com.foo.data.Brand cannot be cast to
java.lang.String
java.lang.ClassCastException: com.foo.data.Brand cannot be cast to
java.lang.String
        at
org.apache.tapestry.corelib.components.Select$1.toClient(Select.java:62)
        at
org.apache.tapestry.corelib.components.Select.writeOptions(Select.java:1
94)
        at
org.apache.tapestry.corelib.components.Select.options(Select.java:169)
        at
org.apache.tapestry.corelib.components.Select.beforeRenderTemplate(Selec
t.java)


<< Main.html (abridged) >>

<t:form>
        <select t:type="select" t:id="brand" value="brand"
model="brandSelectModel"/>
</t:form>


<< Main.java (abridged) >>

package com.foo.pages;

import com.foo.data.Brand;

public class Main {

        private Brand brand;

        public Brand getBrand() {
                return brand;
        }
        
        public void setBrand(Brand brand) {
                this.brand = brand;
        }

        public BrandSelectModel getBrandSelectModel() {
                return new BrandSelectModel(getBrands());
        }

        public List<Brand> getBrands() {
                List<Brand> brands = new ArrayList<Brand>();
                brands.add(new Brand("1", "Brand 1"));
                brands.add(new Brand("2", "Brand 2"));          
                brands.add(new Brand("3", "Brand 3"));
                return brands;
        }

}


<< Brand.java (abridged) >>

package com.foo.data;

public class Brand {

        private String id;
        private String description;

        public Brand() {}

        public Brand(String id, String description) {
                this.id = id;
                this.description = description;
        }

        public String getId() {
                return id;
        }

        public String getDescription() {
                return description;
        }

}


<< BrandSelectModel.java >>

package com.foo.uisupport;

import com.foo.data.Brand;

public class BrandSelectModel implements SelectModel {
        
        private List<Brand> brands;
        
        public BrandSelectModel(List<Brand> brands) {
                this.brands = brands;
        }
        
        public List<OptionGroupModel> getOptionGroups() {
                return null;
        }

        public List<OptionModel> getOptions() {
                List<OptionModel> optionModelList = new
ArrayList<OptionModel>();
                for(Brand brand: brands) {
                        optionModelList.add(new
OptionModelImpl(brand.getDescription(), false, brand, new String[0]));
                }
                return optionModelList;
        }

}



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

Reply via email to