tapestry-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From yosemite <kmic...@hotmail.com>
Subject Re: ValueEncoder stopped working in 5.017
Date Wed, 10 Dec 2008 16:45:27 GMT

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: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org


Mime
View raw message