--- Ted Husted <[EMAIL PROTECTED]> wrote: > Yes, ideally the Action should be able to focus on > the top-level > outcome of the business logic. Did the request > success or fail? Was > there a recoverable error? A fatal exception?
... and struts2 action being xwork action does just this - no more or less. it performed business logic and determined outcome as string result name. > Then, the Action returns a code that indicates > logical outcome. In > practice, the result code maps to a result that > encapsulates a path. it maps to some kind of result - it just happens that there are results now (mostly) which encapsulate a path. > But, what if there are flavors of success or > failure?. ... they are kind of different results. >As Don points > out, we might want to present different pages based > on the browser. What action got to do with it? > Or, we might want to present different pages based > on locale? ... not an action business. result shall take care of this ( like rewrite rules in httpd - call it LocalAwareResult which pulls locale and , say, adds proper suffix ) > Or based on security role? ... again result could take this over. or even template itself. > Do we want to cram all this into a single result > code? yep. with proper results and maybe kind of interceptors > Of course, we _could_. One alternative would be to > have codes like > > <action name="ViewFoo" class="mypackage.ViewFoo"> > > <result > name=""success.modern-browser">ViewFoo.jsp</result> > <result > name="success.netscape4">ViewFoo-netscape4.jsp</result> > > <result > name="failure.modern-browser">ViewFoo-failure.jsp</result> > <result > name="failure.netscape4">ViewFoo-netscape4-failure.jsp</result> > > <action> > > And, the selection logic would be delegated to a > helper method that > generated the token > > return findResult("success"); Congratulation. You are describing ( somehow ) situation of struts-1 - action has to be aware of servlet environment and take decisions based on it. And how are you going to sumulate this in tests? > But, in practice, this has proven to be a very > common use case. > There's the browser-agent case, the ajax-case, the > localization-case, > the security-roles case, to name a few. We often > want to select a > specialized result for the same general outcome > ("success", "failure", > "error", "exception", "login") . Why do it in action? regards, ----[ Konstantin Pribluda http://www.pribluda.de ]---------------- Still using XDoclet 1.x? XDoclet 2 is released and of production quality. check it out: http://xdoclet.codehaus.org ____________________________________________________________________________________ Low, Low, Low Rates! Check out Yahoo! Messenger's cheap PC-to-Phone call rates (http://voice.yahoo.com) --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]