Let's say the primary key is 10, Tapestry would encode it in DirectLink
like sp=S10.
So, really is there any way to transparently plug in encoding mechanism
for it. Should I look into implementing a custom ServiceEncoding?
Thanks!
Serge
Alan Chandler wrote:
On Friday 03 March 2006 02:43, Sergei Dubov wrote:
I have an interesting problem...
Let's say I have to pass a primary key of a DB record to a component's
parameter. Say, I write in my page template for TextField
"ognl:customer.locationId". Customer is a domain object, locationId is a
primary key of one of the locations that the customer has.
What I want is that the locationId be encoded in the forms (on POST) and
in the link (on GET). I can take care of the encoding mechanism. And I
am looking for a way to tell Tapestry to do it transparently for me.
I understand that the key may be the concept of IBinding. If IBinding
knows how to encode and decode values, then this should be a piece of cake.
Please let me know, first of all, if this is the correct train of
thought. And second, please, help me figure out how to extend
ExpressionBinding (I assume this is the one I need), to plugin in my
encoding logic.
I think your mind set is potentially wrong. You don't need to get down to
that level of detail. Basically what form is your location id? just a
string or integer or something more complex. What about customer as a whole?
Effectively in tapestry you can pass any serializeable object as a parameter
to a listener. so all you should need for links is something like
<span jwcid="@DirectLink" listener="listener:do Action"
parameters="ognl:customer.locationId">
public IPage doAction(String id) {
...
}
or even (if Customer was serializable)
<span jwcid="@DirectLink" listener="listener:doAction"
parameters="ognl:customer">
public IPage doAction(Customer customer) {
...
}
In a form if the field is in a text field anyway, you can read it directly
from the forms listener
getCustomer().getLocationId()
or if you don't want it visible to the user just make it a hidden field
<input jwcid="@Hidden" value="ognl:customer.locationId" />
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]