[ https://issues.apache.org/jira/browse/WW-4366?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
samarjit samanta updated WW-4366: --------------------------------- Description: Struts2 action methods should accept arguments just like JAX-RS specs. Also certain method types should be allowed only like GET, PUT, POST, DELTE. Inspiration might be taken from struts-json plugin @SMDMthod but that is not a real action method. If there are multiple action methods in a Action class then it becomes less obvious which variables are used for a particular action method. Ex. ``` @ActionPath("/books/{id}") public String showAction(@PathParam("id") String id, @QueryParam("name") String name) { ... return "success"; } ``` Also flexible return types as defined in JAX-RS would be great or atleast `Result.json(myObject).includeActionErrors().includeActionMessages().done();` `Result.string(myString).done();` `Result.create("json").from(myObject).param("includeActionErrors,includeActionMessages").done();` The action method return type can be to denote builder like result. The closest in struts I can see is HttpHeaderResult. But this does not allow arbritrary string result and let the end user create the string as json or plain text. ``` @Action public Result showAction(...){} ```` Inspiration can be taken from struts2-json-plugin#SMDMethod and [struts2-freeroute-plugin](https://github.com/bastengao/struts2-freeroute) was: Struts2 action methods should accept arguments just like JAX-RS specs. Also certain method types should be allowed only like GET, PUT, POST, DELTE. Inspiration might be taken from struts-json plugin @SMDMthod but that is not a real action method. If there are multiple action methods in a Action class then it becomes less obvious which variables are used for a particular action method. Ex. {code:java} @ActionPath("/books/{id}") public String showAction(@PathParam("id") String id, @QueryParam("name") String name) { ... return "success"; } {code} Also flexible return types as defined in JAX-RS would be great or at least {code:java} Result.json(myObject).includeActionErrors().includeActionMessages().done(); Result.string(myString).done(); Result.create("json").from(myObject).param("includeActionErrors,includeActionMessages").done(); {code} Inspiration can be taken from struts2-json-plugin#SMDMethod and (struts2-freeroute-plugin) [https://github.com/bastengao/struts2-freeroute] > Action methods should accept arguments like @QueryParam, @FormParam, > @PathParam and specific request methods GET, PUT, POST etc > --------------------------------------------------------------------------------------------------------------------------------- > > Key: WW-4366 > URL: https://issues.apache.org/jira/browse/WW-4366 > Project: Struts 2 > Issue Type: New Feature > Components: Core Actions > Reporter: samarjit samanta > Labels: features > Fix For: 2.5 > > > Struts2 action methods should accept arguments just like JAX-RS specs. Also > certain method types should be allowed only like GET, PUT, POST, DELTE. > Inspiration might be taken from struts-json plugin @SMDMthod but that is not > a real action method. > If there are multiple action methods in a Action class then it becomes less > obvious which variables are used for a particular action method. > Ex. > ``` > @ActionPath("/books/{id}") > public String showAction(@PathParam("id") String id, > @QueryParam("name") String name) { > ... > return "success"; > } > ``` > Also flexible return types as defined in JAX-RS would be great or atleast > `Result.json(myObject).includeActionErrors().includeActionMessages().done();` > `Result.string(myString).done();` > `Result.create("json").from(myObject).param("includeActionErrors,includeActionMessages").done();` > The action method return type can be to denote builder like result. The > closest in struts I can see is HttpHeaderResult. But this does not allow > arbritrary string result and let the end user create the string as json or > plain text. > ``` > @Action > public Result showAction(...){} > ```` > Inspiration can be taken from struts2-json-plugin#SMDMethod and > [struts2-freeroute-plugin](https://github.com/bastengao/struts2-freeroute) -- This message was sent by Atlassian JIRA (v6.2#6252)