Yep, this is the same thing I do. I put my DataObject in a special
DataContext (editing scratchpad area) which I store in the component
tree with t:saveState.
If the user saves, I commit the changes. If the user cancels, I
nullify the object and context. If the user leaves the page, the
data leaves with them (client-side state saving).
However, this is probably different than wanting to reset a form. My
use case for resetting a form is a search criteria page.
On 8/1/06, Andrew Robinson <[EMAIL PROTECTED]> wrote:
I have had to do similar things but took a different approach.
First I assumed users will not always be nice. They will sometimes use
the back button, sometimes close the browser, etc.
Second, I don't want to keep un-applied changes around (so in a
list-detail view, the list shouldn't show changes until the details
are saved)
My solution, was instead of keeping the old values around, was to
always work on a clone.
So, when the user runs an edit() action, I clone the object from the
list to edit. The user works on that object for a while, and either:
(1) saves, (2) cancels or (3) leaves the page
In the case of (1), I save the changes to the database, and then update the list
In the case of (2), I simply throw the clone out (equivalent of clear.
If you wanted to reset and keep editing, just generate a new clone)
In the case of (3), the clone just sits around until my Seam
conversation is GC'd or the user starts editing a new item (in which
case the clone is recreated, overwriting the old clone)
Thought I would mention in case that is the business logic/page flow
you are trying to achieve.
-Andrew
On 8/1/06, Mike Kienenberger <[EMAIL PROTECTED]> wrote:
> On 8/1/06, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:
> > I want to be able to reset an update form to it's initial state. Sounds
> > simple enough, but...
>
> For what it's worth, I handled this by creating a "public String
> clear() { return "clear"; } action method and a
> redirect-back-to-the-same-page navigation rule.
>
> <navigation-rule>
> <from-view-id>/pages/mypage.xhtml</from-view-id>
> <navigation-case>
> <from-outcome>clear</from-outcome>
> <to-view-id>/pages/mypage.xhtml</to-view-id>
> <redirect />
> </navigation-case>
> </navigation-rule>
>
> I don't really like it, but resetting all of the page backing been
> values to null in an action wasn't working, and I didn't want to spend
> the time to track down why.
>
> (You can use use action="clear" and skip the java code, but I have my
> commented-out java-based clearing code in there still.)
>