Greetings,

I am new to Tapestry, but am I long time WebObjects developer.  I am in the
process of creating some simple tapestry apps to test the concepts, and am
working through "Tapestry in Action" in the process.

One issue I am facing is the order in which form values are propagated back
into the page and listeners are invoked during a form submit.  Specifically
the fact that only the form's listener is invoked after all values have been
propagated.  For instance in the to-do list example in ch. 3 the issue comes
up with respect to the "move up", "move down" buttons.  The listener for
those buttons simply records the action and waits for the form level
listener to actually carry out the operation.  This is an odd artifact of
the way rewind is handled in that depending on where the submit button is
located relative to the form input fields, it may or may not be ok to
process the action directly in the listener for that button.  In contrast,
in the to-do list example the delete action is handled directly because it
happens to be located at the end of the form.

This minor inconvenience becomes more problematic when you want to
componentize pieces of a form.  For instance imagine a subcomponent that
encapsulates a single row of the to-do list table.  The fact that this row
cannot handle its own submit actions means the component is not truly
encapsulated.  It has to coordinate with the form that may be a distant
ancestor in the component hierarchy.

Is there something fundamental I am missing in the model here?  Note
webobjects handles this gracefully by decoupling form submission into two
phases: value propagation (the takeValues phase in WO parlance), and action
handling (invokeAction phase).  Is there any reason tapestry doesn't
decouple these two to ensure that any action, no matter where its submit
button was located in the form can be safely executed without concern for
whether all of the values have been pushed?

Thanks much!

gt


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to