I tagged a version of MailReader Zero that was using a single
namespace and (some) multiple methods at

 * http://sq1-struts2.googlecode.com/svn/tags/mailreader-zero-flat/

I've started to refactor the "head" to use multiple namespaces and
single-method classes, but so far I'm only half done.

 * http://sq1-struts2.googlecode.com/svn/trunk/articles/mailreader-zero/

-Ted.

On 10/2/07, Brian Pontarelli <[EMAIL PROTECTED]> wrote:
> Finally got a chance to look this over. Here's a few things:
>
> 1. You don't need action annotations unless you are actually doing work.
> You can safely hit URLs without actions and only results. I noticed that
> you had a empty Hello action and a number of actions inside classes that
> didn't do anything (i.e. login-input inside Login). My favored pattern
> is to keep it simple like this:
>
> ===== code =====
> package actions;
> @Result(name="success", location="bar", type="redirect-action")
> public class Foo extends ActionSupport {
> }
>
> ===== JSP =====
> WEB-INF/results/foo-input.jsp
>
> Links into the foo form reference foo-input and the form submits to foo.
> You can also do the GET/POST check that Rails suggests and collapse
> everything to just foo. In most cases I just use inline redirect actions
> for cancel buttons and redirect after post and this reduces the clutter
> even more.
>
> 2. I tend to shy away from multiple actions inside classes. For crud I
> use s:action for form preparation (this is actually better because it
> reduces overhead of preparing the form on success). For other types of
> forms, if I have to share logic (rarely) I use a base class, but
> otherwise I just make one class per URL. In most re-use cases I
> introduce re-usable services in a separate tier to clean out actions and
> make the one action per URL simpler to code.
>
> 3. Likewise, I try to avoid heavy re-use of result pages and try to
> stick with the convention based approach. It seems to make the code more
> readable and easy to get into. For CRUD I setup something like this:
>
> ==== Classes ====
> List.java - Fetches the existing entities for display
> Prepare.java - Used only via the s:action and implements Action
> Edit.java - Fetches an existing entity and renders the edit form
> Save.java - Inserts a new entity
> Update.java - Updates the existing entity
> Delete.java - Deletes an entity or entities
>
> ==== Results ====
> add.jsp - Includes form.jsp and passes a parameter to set the action
> type (i.e. save)
> edit.jsp - Includes form.jsp and passes a parameter to set the action
> type (i.e. update)
> form.jsp - The CRUD form used for insert and update
> list.jsp - Lists the current entities
>
> I'm planning on putting up a CRUD demo for SmartURLs at some point, when
> I get time. This will help illustrate what I'm talking about a bit more.
>
> -bp
>

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

Reply via email to