public interface ValueEncoder<V>
EventContext
as part of a URL, and when
components (such as Select
)
need to generate unique client-side strings to be rendered within form
elements.
Tapestry can automatically generate ValueEncoders for enums as well as
Collections of any object types for which a coercion can be found from a
formatted String, such as primitives, primitive wrappers, Dates, Calendars,
"name=value" strings, and any types for which a custom type coercion has been contributed.
Custom ValueEncoder implementations will need to be supplied for entity type
objects. In such cases the toClient(Object)
method typically returns
an object's database primary key, and the toValue(String)
re-acquires the corresponding entity object, perhaps by doing a database
lookup by that ID.
Some optional modules, such as Tapestry's own Hibernate and JPA modules, can
automatically create a ValueEncoder for each of your entity types and then
configure Tapestry to use them whenever a ValueEncoder is needed for those
types. If you don't use one of those modules, you can still configure
Tapestry to automatically use your custom ValueEncoder implementations by
having your ValueEncoder implement the
ValueEncoderFactory
interface and then
contributing a ValueEncoderSource that adds your encoder, like this, in your
application's module class:
public static void contributeValueEncoderSource( MappedConfiguration<Class<Color>, ValueEncoderFactory<Color>> configuration) { configuration.addInstance(Color.class, ColorEncoder.class); }
String toClient(V value)
toValue(String)
. In
some cases, what is returned is an identifier used to locate the true object, rather than a string representation
of the value itself.value
- to be encodedV toValue(String clientValue)
toClient(Object)
, back into a server-side value.clientValue
- string representation of the value's identity${project.version} - Copyright © 2003-2015 The Apache Software Foundation.