Re: Convention without REST
Thanks Allen -- I modified the remove() to return SUCCESS and it only resulted in a different error; namely: *Messages*: No result defined for action com.foo.actions.music.InstrumentsAction and result success From all the reading (source code is next) it sure seems like * http://localhost:8080/struts2-20a/music/instruments/remove* on an action* com.foo.actions.music.InstrumentsAction *with a method* remove() that returns remove *should automatically select* music/instruments-remove.jsp *using the convention mapper. Peace, Scott On Tue, Dec 14, 2010 at 5:06 PM, Allen Lee allen@asu.edu wrote: I think this does the right thing if you return Action.SUCCESS in your remove() action method instead of remove. Otherwise you'll need a custom result mapping for that new result string. On Tue, Dec 14, 2010 at 8:57 AM, stanl...@gmail.com wrote: I began writing about the 2.2.1 convention plugin and naturally started writing code. I especially like not having to code XML when my file naming is clean and straightforward. I started off with a package named *com.foo.actions.music* which resolves to the namespace (URL)* /music*. Next I created an Action there call* Instruments* which is accessible via*/music/instruments * where the *execute *method is invoked and the resulting *WEB-INF/content/music/instruments.jsp *displayed. So now I want to experiment with specialized variations on the URL in order to execute methods other than execute. I added a method @Action(/remove) public String remove() { return remove; } to my *Instruments *action and tried the following URL in the browser* /music/instruments/remove. *The remove method was invoked where it returned the string remove. I expected this to resolve to *WEB-INF/content/music/instruments-remove.jsp, *which it **did not**. Instead I received that oh-so-familiar *Messages*: No result defined for action com.foo.actions.music.InstrumentsAction and result remove After several experiments and readings, I added the following annotation: @Action(value = /remove, results = { @Result(name = remove, type = dispatcher, location = music/instruments-remove.jsp) }) public String remove() { return remove; } which has both * /music/instruments *and* ** /music/instruments/remove *working fine. However, as I study this annotation, it looks like the convention has fallen down and I am simply coding annotations where I would have wired up XML glue. I realize there is support for REST and wildcards, but I would like to see if anyone can throw me a bone vis-a-vis the annotations plug-in and support for methods beyond execute(). I realize I could have if/else code in execute() that returns this string or that, but seriously? -- Allen Lee Center for the Study of Institutional Diversity [http://csid.asu.edu] Arizona State University | P.O. Box 872402 | Tempe, Arizona 85287-2402 Office: 480.727.0401 | Fax: 480.965.7671 - To unsubscribe, e-mail: user-unsubscr...@struts.apache.org For additional commands, e-mail: user-h...@struts.apache.org
Convention without REST
I began writing about the 2.2.1 convention plugin and naturally started writing code. I especially like not having to code XML when my file naming is clean and straightforward. I started off with a package named *com.foo.actions.music* which resolves to the namespace (URL)* /music*. Next I created an Action there call* Instruments* which is accessible via*/music/instruments * where the *execute *method is invoked and the resulting *WEB-INF/content/music/instruments.jsp *displayed. So now I want to experiment with specialized variations on the URL in order to execute methods other than execute. I added a method @Action(/remove) public String remove() { return remove; } to my *Instruments *action and tried the following URL in the browser* /music/instruments/remove. *The remove method was invoked where it returned the string remove. I expected this to resolve to *WEB-INF/content/music/instruments-remove.jsp, *which it **did not**. Instead I received that oh-so-familiar *Messages*: No result defined for action com.foo.actions.music.InstrumentsAction and result remove After several experiments and readings, I added the following annotation: @Action(value = /remove, results = { @Result(name = remove, type = dispatcher, location = music/instruments-remove.jsp) }) public String remove() { return remove; } which has both * /music/instruments *and* ** /music/instruments/remove *working fine. However, as I study this annotation, it looks like the convention has fallen down and I am simply coding annotations where I would have wired up XML glue. I realize there is support for REST and wildcards, but I would like to see if anyone can throw me a bone vis-a-vis the annotations plug-in and support for methods beyond execute(). I realize I could have if/else code in execute() that returns this string or that, but seriously?
Re: Convention without REST
I think this does the right thing if you return Action.SUCCESS in your remove() action method instead of remove. Otherwise you'll need a custom result mapping for that new result string. On Tue, Dec 14, 2010 at 8:57 AM, stanl...@gmail.com wrote: I began writing about the 2.2.1 convention plugin and naturally started writing code. I especially like not having to code XML when my file naming is clean and straightforward. I started off with a package named *com.foo.actions.music* which resolves to the namespace (URL)* /music*. Next I created an Action there call* Instruments* which is accessible via*/music/instruments * where the *execute *method is invoked and the resulting *WEB-INF/content/music/instruments.jsp *displayed. So now I want to experiment with specialized variations on the URL in order to execute methods other than execute. I added a method �...@action(/remove) public String remove() { return remove; } to my *Instruments *action and tried the following URL in the browser* /music/instruments/remove. *The remove method was invoked where it returned the string remove. I expected this to resolve to *WEB-INF/content/music/instruments-remove.jsp, *which it **did not**. Instead I received that oh-so-familiar *Messages*: No result defined for action com.foo.actions.music.InstrumentsAction and result remove After several experiments and readings, I added the following annotation: @Action(value = /remove, results = { @Result(name = remove, type = dispatcher, location = music/instruments-remove.jsp) }) public String remove() { return remove; } which has both * /music/instruments *and* ** /music/instruments/remove *working fine. However, as I study this annotation, it looks like the convention has fallen down and I am simply coding annotations where I would have wired up XML glue. I realize there is support for REST and wildcards, but I would like to see if anyone can throw me a bone vis-a-vis the annotations plug-in and support for methods beyond execute(). I realize I could have if/else code in execute() that returns this string or that, but seriously? -- Allen Lee Center for the Study of Institutional Diversity [http://csid.asu.edu] Arizona State University | P.O. Box 872402 | Tempe, Arizona 85287-2402 Office: 480.727.0401 | Fax: 480.965.7671 - To unsubscribe, e-mail: user-unsubscr...@struts.apache.org For additional commands, e-mail: user-h...@struts.apache.org