Hello, I have resolved by rebuilding the project using Maven, probably was a classpath issue, no sure, glad it works now :-) Karel
yosemite wrote: > > Hello, > the attached code worked fine in 5.011 but in 5.017 it blows up saying: > Render queue error in BeforeRenderTemplate[Index:select]: Failure reading > parameter 'encoder' of component Index:select: Could not find a coercion > from type org.example.myapp.util.IntegerEncoder to type > org.apache.tapestry5.ValueEncoder. Maybe I missed in version 5.017 the > encoder works different? > Any help really appreciated > Karel > --- > index.tml: > <html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd"> > <head><title>myapp Start Page</title></head> > <body> > <form t:id="form"> > <h1>myapp Start Page</h1> > <p> This is the start page for this application, a good place to > start your modifications. > Just to prove this is live: </p> > <p> The current time is: ${currentTime}. </p> > <p> > [<t:pagelink t:page="Index">refresh</t:pagelink>] > </p> > <t:select t:value="year" t:model="yearModel" > t:encoder="encoder" /> > </form> > </body> > </html> > --- > package org.example.myapp.pages; > import java.util.Calendar; > import java.util.Date; > import org.apache.tapestry5.SelectModel; > import org.apache.tapestry5.ValueEncoder; > import org.apache.tapestry5.annotations.Component; > import org.apache.tapestry5.corelib.components.Form; > import org.example.myapp.util.IntegerEncoder; > import org.example.myapp.util.IntegerSelectModel; > public class Index { > @Component > private Form form; > private Calendar c = Calendar.getInstance(); > public Date getCurrentTime() { > return new Date(); > } > public int getYear() { > return c.get(Calendar.YEAR); > } > public SelectModel getYearModel() { > return (SelectModel) new IntegerSelectModel(1900, 2010); > } > public ValueEncoder getEncoder() { > return (ValueEncoder) new IntegerEncoder(); > } > } > --- > package org.example.myapp.services; > import java.io.IOException; > import org.apache.tapestry5.ioc.ServiceBinder; > import org.apache.tapestry5.services.Request; > import org.apache.tapestry5.services.RequestFilter; > import org.apache.tapestry5.services.RequestHandler; > import org.apache.tapestry5.services.Response; > import org.slf4j.Logger; > public class AppModule { > public static void bind(ServiceBinder binder) {} > public RequestFilter buildTimingFilter(final Logger log) { > return new RequestFilter() { > public boolean service(Request request, Response > response, > RequestHandler handler) throws > IOException { > long startTime = System.currentTimeMillis(); > try { > return handler.service(request, > response); > } finally { > long elapsed = > System.currentTimeMillis() - startTime; > log.info(String.format("Request time: > %d ms", elapsed)); > } > } > }; > } > } > --- > package org.example.myapp.util; > import org.apache.tapestry5.ValueEncoder; > public class IntegerEncoder implements ValueEncoder { > public String toClient(Object i) { > return i.toString(); > } > public Object toValue(String s) { > return new Integer(s); > } > } > --- > package org.example.myapp.util; > import java.util.Map; > import org.apache.tapestry5.OptionModel; > public class IntegerOptionModel implements OptionModel { > private Number number; > public IntegerOptionModel(Number num) { > number = num; > } > public Map<String, String> getAttributes() { > return null; > } > public String getLabel() { > return "" + number; > } > public Object getValue() { > return number; > } > public boolean isDisabled() { > return false; > } > } > --- > package org.example.myapp.util; > import java.util.ArrayList; > import java.util.List; > import org.apache.tapestry5.OptionGroupModel; > import org.apache.tapestry5.OptionModel; > import org.apache.tapestry5.util.AbstractSelectModel; > public class IntegerSelectModel extends AbstractSelectModel { > private List<OptionModel> options = new ArrayList<OptionModel>(); > public IntegerSelectModel(int numFrom, int numTo) { > int increment = numTo > numFrom ? 1 : -1; > for (int i = numFrom; i <= numTo; i += increment) { > options.add(new IntegerOptionModel(i)); > } > } > public List<OptionGroupModel> getOptionGroups() { > return null; > } > public List<OptionModel> getOptions() { > return options; > } > } > --- > web.xml: > <?xml version="1.0" encoding="UTF-8"?> > <!DOCTYPE web-app > PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" > "http://java.sun.com/dtd/web-app_2_3.dtd"> > <web-app> > <display-name>myapp Tapestry 5 Application</display-name> > <context-param> > <!-- The only significant configuration for Tapestry 5, this > informs Tapestry > of where to look for pages, components and mixins. --> > <param-name>tapestry.app-package</param-name> > <param-value>org.example.myapp</param-value> > </context-param> > <filter> > <filter-name>app</filter-name> > <filter-class>org.apache.tapestry5.TapestryFilter</filter-class> > </filter> > <filter-mapping> > <filter-name>app</filter-name> > <url-pattern>/*</url-pattern> > </filter-mapping> > </web-app> > > -- View this message in context: http://www.nabble.com/ValueEncoder-stopped-working-in-5.017-tp20828992p20939061.html Sent from the Tapestry - User mailing list archive at Nabble.com. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]