Thanks Craig and James. I can accept the original design
thinking. Raising the question is because I thought skipping
over populating form beans in canceling process is
a *common* behavior, and therefore it should be
implemented in base classes, instead of in sub classes.

The 'Are-you-sure-yes-no' dialog right after 'Cancel'
button is a *special* scenario. I observed a lot of
'Are-you-sure-yes-no' dialogs right after 'Exit' button
or 'Save' button, and haven't found any real application
giving me a 'Are-you-sure-yes-no' dialog after 'Cancel'
button. So I thought it is more a semantic problem
rather than an application specific problem.

I agree with Craig on the backwards compatibility issue
and like the ideas to add an attribute to the CancelTag
to allow both scenarios.

Thanks,
Jing


----- Original Message -----
From: "James Mitchell" <[EMAIL PROTECTED]>
To: "Struts Developers List" <[EMAIL PROTECTED]>
Sent: Wednesday, April 10, 2002 10:05 PM
Subject: RE: The Semantic of 'Cancel' Button


> Sorry if I appear overly aggressive, but this reminds me of an argument I
> had with a former project manager (note the word *former* because he
didn't
> last too long)
>
> If you look at the source code
> http://jakarta.apache.org/builds/jakarta-struts/release/v1.0.2/src/
> (or) the developer guide
> http://jakarta.apache.org/struts/struts-html.html#cancel
> (or) the taglib documentation
> http://jakarta.apache.org/struts/struts-html.html#cancel
> it clearly states that using the html:cancel will render an <input
> type="submit" name="......and so on and so forth.
>
> Therefore it is up to you (the developer) to decide what to do inside your
> action class.  If you have decided to give the user one last chance (Are
you
> sure?  Yes/No)  You certainly don't want your auto-magically populated
form
> bean to be "kicked-to-the-curb" (sorry, I'm from Georgia).
>
> On the other hand.  If you want to avoid the overhead (however little it
> might be) of having your form populated, then you could create a separate
> html:form on the page and stick your cancel where the sun don't
> shi.....(sorry, getting off track here).....have your cancel submit its
own
> form so that struts has nothing to populate.  You even get the added bonus
> of specifying a different action so you don't have to figure it out in
(what
> would have been) the original action class.
>
> This issue is really specific to someone's application, not really about
> struts.
>
> Good Luck
> JM
>
> (I never did like that project manager anyway)
>
>
> > -----Original Message-----
> > From: Craig R. McClanahan [mailto:[EMAIL PROTECTED]]
> > Sent: Wednesday, April 10, 2002 10:31 PM
> > To: Struts Developers List
> > Subject: Re: The Semantic of 'Cancel' Button
> >
> >
> >
> >
> > On Wed, 10 Apr 2002, Jing Zhou wrote:
> >
> > > Date: Wed, 10 Apr 2002 16:42:13 -0500
> > > From: Jing Zhou <[EMAIL PROTECTED]>
> > > Reply-To: Struts Developers List <[EMAIL PROTECTED]>
> > > To: Struts Developers List <[EMAIL PROTECTED]>
> > > Subject: The Semantic of 'Cancel' Button
> > >
> > > In STRUTS, the 'Cancel' button (the html tag) will populate
> > > the form beans, if there is one, and skip over the validation.
> > > The question is why STRUTS need to populate the form beans
> > > When a 'Cancel' button signal is received.
> > >
> >
> > The original thinking for this design is that "cancellation is in the
eyes
> > of the beholder" -- it's the action that decides whether the user really
> > cancelled or not.  In addition, you couldn't do an "are you sure" page
> > that redisplayed the partially filled out form unless the form bean was
> > populated.
> >
> > I can see your reasoning for the opposite behavior as well -- but
changing
> > it now would also be a backwards compatibility issue.  At best, we could
> > make it a configurable behavior.  (Or, you can subclass ActionServlet in
> > 1.0 or RequestProcessor in 1.1 and achieve that behavior for yourself by
> > overriding a single method.)
> >
> > Craig
> >
> >
> > > >From my past experiences on UI development, if the 'Cancel' button
> > > is clicked in a dialog, it will close the dialog and do NOT apply
> > > any changes to the underlying data buffer, in STRUTS contexts,
> > > the data buffer is the form beans. If the 'Cancel' button
> > > is shown on a html page, when it is clicked, it will take the users
> > > to a different page, which is the first page of a wizard like app,
> > > or some index page. So in either cases, STRUTS do not need
> > > to populate the form beans.
> > >
> > > More important is that when user click the 'Cancel' button, she
> > > means to discard whatever data on the screen. But STRUTS
> > > populate the discarded data into the working form beans, so
> > > it creates possibility that developers may use wrong data
> > > in the form beans and make further logic decisions. Actually,
> > > all the developers need to know is the Action.isCancelled(),
> > > that is enough, in my opinion.
> > >
> > > It gets another problem if the application would like to
> > > re-produce the screen before the 'Cancel' button is clicked.
> > > The re-produced screen will show up with the data which
> > > she means to discard in the previous clicking of the 'Cancel'
> > > button in the current STRUTS implementation.
> > >
> > > In all scenarios I think STRUTS should skip over the population
> > > of the form beans  when the 'Cancel' button is clicked.
> > > Could anyone clarify this issue? It is possible I am missing
> > > some other scenarios where populating form beans are
> > > necessary when clicking the 'Cancel' button.
> > >
> > > Thanks,
> > >
> > > Jing
> > >
> >
> >
> > --
> > To unsubscribe, e-mail:
> > <mailto:[EMAIL PROTECTED]>
> > For additional commands, e-mail:
> > <mailto:[EMAIL PROTECTED]>
> >
> >
>
>
> --
> To unsubscribe, e-mail:
<mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail:
<mailto:[EMAIL PROTECTED]>
>
>


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

Reply via email to