Ian Bicking wrote:
>On Tue, 2002-10-08 at 22:39, Matthew J. Feifarek wrote:
>
>
>I myself never use actions, though kind of for this reason -- I have a
>hard time arranging the logic when actions are sometimes called, and
>sometimes not. My solution has been not to use actions at all.
>
>
I like the cleanliness of actions; put the security check up inside of
handleActions() and forget about it; just write methods. It seems more
OO than huge trees of if/elif/else. But I can see your point.
>BTW, I've been using an alternate Page-like servlet structure (which I
>haven't put in CVS or anything -- but maybe I should put it in
>Experimental). Anyway, it makes much more significant use of
>exceptions. I have a feeling it would simplify what you are doing,
>
>
We are doing something similar; catching the exception with a runtime
mixin into the Transaction class. If a user fails to pass security tests
in awake(), we want to short-circuit the rest of awake, so we throw an
exception that's caught by the thing that called awake... Transaction.
It's a little ugly shoe-horning this into Transaction, but it seems to
work without any ill effects.
>since at any point you could raise a Forbidden exception. In general
>I've found that cleaner than doing security through if statements.
>
>
Agreed.
>Do you mean that, if no explicit _action_ was given, you'd do something
>like handleAction('default') (and skip writeHTML entirely, but the
>default action would call writeHTML by default)?
>
>
I'm saying that it essentially IS this way already... as written, if
there are no actions, webkit runs writeContent; this IS the default action.
To pollute matters even further, parts of writeHTML() are still called
when an action is triggered; there are TWO PLACES that these methods are
called; ick. We moved around this in FormKit with a reinterpretation of
preAction --> action --> postAction, but it always bothered me.
Aside from redirects, every servlet is going to output something, so
every servlet is going to have a writeHTML. SO, I'm saying that by
putting application logic into actions, and letting output methods be
called from that application logic, you end up with a simpler lifecycle
setup:
awake()
respond():
handleAction():
preAction():
# write beginning of html page here, including header,
stylesheets, body tag open, etc
action():
# do application logic; writing to database, whatever
# call appropriate output method or if/else the output here
postAction():
# close up the html
sleep()
This seems preferable to "do this when there's an action, and do this
other thing when there isn't". I see the non-action case as a weird
exception to an otherwise solid way to use a web browser to talk to
server objects.
-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
Webware-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/webware-devel