[ https://issues.apache.org/jira/browse/TAP5-818?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Thiago H. de Paula Figueiredo closed TAP5-818. ---------------------------------------------- Resolution: Won't Fix Tapestry's prop binding uses class creation, not reflection, to get and set values. As the type of T is not known until runtime, all Tapestry know is that T is Object. > JDK5 Generic is not supported by property chain > ----------------------------------------------- > > Key: TAP5-818 > URL: https://issues.apache.org/jira/browse/TAP5-818 > Project: Tapestry 5 > Issue Type: Bug > Components: tapestry-core > Affects Versions: 5.1.0.5 > Environment: Tapestry 5.1.0.5 > JDK5 > Reporter: maxyu > > Below is the example > KeyedObject.java:used to store string keyed object > import java.util.*; > import java.util.Map.Entry; > public class KeyedObject<T> { > private String key; > private T value; > public String getKey() { > return key; > } > public void setKey(String key) { > this.key = key; > } > public T getValue() { > return value; > } > public void setValue(T value) { > this.value = value; > } > } > page java class:dbpools simply put BasicDataSource and its key name into a > KeyObject list > import java.util.Iterator; > import java.util.LinkedList; > import java.util.List; > import java.util.Map; > import java.util.Map.Entry; > import org.apache.commons.dbcp.BasicDataSource; > import org.apache.tapestry5.annotations.Property; > import org.apache.tapestry5.ioc.annotations.Inject; > import com.elite.predictob.EliteOBManagerProxy; > import com.elite.predictob.KeyedObject; > public class dbpools { > @Inject > private EliteOBManagerProxy proxy; > > @Property > private KeyedObject<BasicDataSource> datasource; > > public List<KeyedObject<BasicDataSource>> getDatasources() > { > Map dbmap=proxy.getManager().getDataSources(); > synchronized (dbmap) { > List<KeyedObject<BasicDataSource>> list=new > LinkedList<KeyedObject<BasicDataSource>>(); > Iterator<Entry<String,BasicDataSource>> > it=dbmap.entrySet().iterator(); > while(it.hasNext()){ > Entry<String,BasicDataSource> entry=it.next(); > KeyedObject<BasicDataSource> obj=new > KeyedObject<BasicDataSource>(); > obj.setKey(entry.getKey()); > obj.setValue(entry.getValue()); > list.add(obj); > } > return list; > } > } > } > page template: > <html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd" > xmlns:p="tapestry:parameter" > xmlns:cl="cl"> > <head> > <t:elite.cachecontrol.cachecontrol/> > <title>${message:dbpoolconfig}</title> > </head> > <body> > <table border="1"> > <tr t:type="loop" t:element="tr" t:source="datasources" > value="datasource"> > > <td>${datasource.key}</td><td>${datasource.value.numActive}</td> > </tr> > </table> > </body> > </html> > ${datasource.value.numActive} will cause following error: > Could not convert 'datasource.value.numActive' into a component parameter > binding: Class java.lang.Object does not contain a property named 'numActive' > (within property expression 'datasource.value.numActive'). Available > properties: class. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.