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?