You shouldn't be committing your changes to the actual domain object until the 
form is submitted (your ok button).


Jeremy Thomerson
http://www.wickettraining.com
-- sent from a wireless device


-----Original Message-----
From: Dan Haywood <[email protected]>
Sent: Monday, April 19, 2010 5:53 AM
To: [email protected]
Subject: how to handle clear input for custom FormComponents

Hi all,

I've developed a custom FormComponent (by subclassing FormComponentPanel) to 
act as a reference from one object to another (eg a Customer to an Address), 
but am having problems figuring out how to handle clear input (ie, if the user 
hits the cancel button on the form).

To explain a little further, the FormComponent is called EntityLink, and 
renders the reference (eg the Customer's homeAddress) a hyperlink.  I have a 
button on the EntityLink panel allowing the user to perform a search for other 
objects of the correct type, and then select it.  Doing this updates the 
EntityLink component, with a "pending" value (ie of the new homeAddress).  If 
the user hits the OK button, then the pending value is copied over to the 
domain object (ie to the Customer's actual homeAddress property).

In the cancel button's onSubmit() method I'm calling getForm().clearInput(), 
which seems to use a visitor to call clearInput() on all child 
FormComponent's.  The FormComponent's clearInput() method seems only to set the 
rawInput to a constant (NO_RAW_INPUT), which looks like it's a magic value of 
some kind when the form component is actually rendered - all rather low level.

I think what I'd like is to eagerly capture this clearInput so that I can reset 
my EntityLink's hyperlink back to the original value and discard the pending 
value.  However, clearInput() is unfortunately marked as final so there doesn't 
seem to be any easy way to capture this.

Looking at other implementations of FormComponentPanel (eg DateTimeField) they 
are really very little other than wrappers around simple FormComponents, so 
they don't offer any real clues.

Can anyone help me here, then?

Thanks
Dan


--
Dan Haywood 
consultant, mentor, developer, author 
agile, ddd, oo, java, .net, sybase 
MA, MBCS, CITP, CEng 
mail: [email protected]
phone: +44 (0)7961 144286 
book: Domain Driven Design using Naked Objects
blog: http://danhaywood.com
linked in: http://uk.linkedin.com/in/dkhaywood
twitter: http://twitter.com/dkhaywood
sybase: http://sybtraining.co.uk

Reply via email to