That's great Lukasz. Thanks! Just spotted a typo though, nampespaces :D Regards, Antonios
On 17 December 2012 14:53, Lukasz Lenart <lukaszlen...@apache.org> wrote: > Done, thanks Antonios! > > https://cwiki.apache.org/confluence/display/WW/RestfulActionMapper > > > Regards > -- > Ćukasz > + 48 606 323 122 http://www.lenart.org.pl/ > > 2012/12/10 Antonios Gkogkakis <gkogk...@tcd.ie>: > >> What would be the best way to share an example? Send it here on the > list? > >>You can register an issue and add text and example there or send it here > > > > > > Since this is my first contribution I'll post it here :). I based my > > example on > > https://cwiki.apache.org/confluence/display/WW/RestfulActionMapper so it > > makes sense for someone viewing the wiki > > Furthermore, I tested it struts 2.3.1.2 and I also have a similar working > > example in production. > > > > To use the Restful2ActionMapper in an existing struts application we have > > to change the strus.mapper.class constant > > and let it point to the Restful2ActionMapper > > <constant > > name="struts.mapper.class" > > value="org.apache.struts2.dispatcher.mapper.Restful2ActionMapper" > > /> > > The problem with the above approach is that we may break existing actions > > because the Restful2ActionMapper tries to guess > > the method name using conventions that aren't applicable to normal action > > classes. > > > > To overcome the above problem, we have to use a different action mapper > > depending on the url we want to process. > > REST actions will be processed by the Restful2ActionMapper and non-REST > > actions by the DefaultActionMapper > > > > To achieve that we have to rely on nampespaces and the > > PrefixBasedActionMapper that can choose which action mapper to > > use for a particular url based on a prefix (the action namespace). > > > > To put everything together, we create a package for our rest actions > > <package name="rest" namespace="/rest" extends="struts-default"> > > ....interceptor config > > <action name="movie/*" class="app.MovieAction"> > > <param name="id">{0}</param> > > ....results > > </action> > > .... > > </package> > > All other actions remain in their existing packages and namespaces > > > > we use the PrefixBasedActionMapper telling it to use the > > Restful2ActionMapper for actions > > in the /rest namespace and the DefaultActionMapper for all other actions > > > > <constant > > name="struts.mapper.class" > > value="org.apache.struts2.dispatcher.mapper.PrefixBasedActionMapper" > > /> > > <constant name="struts.mapper.prefixMapping" > value="/rest:restful2,:struts" > > /> > > > > For the Restful2ActionMapper to work we also have to set > > <constant name="struts.enable.SlashesInActionNames" value="true" /> > > <constant name="struts.mapper.alwaysSelectFullNamespace" value="false" /> > > > > @Chad > > 1) I think you are looking at the issue of failing to guess the method > > using Rest conventions for non-REST actions > > but in the context of the ActionMapper used in the REST plugin > > I don't know if something similar can be applied to the > > RestFul2ActionMapper, I just documented how we used > > the Restful2ActionMapper > > 2) I've read your book, when I started working with struts2. Nice work > > indeed ! > > > > Regards, > > Antonios > > > > > >> > >> > > --------------------------------------------------------------------- > To unsubscribe, e-mail: user-unsubscr...@struts.apache.org > For additional commands, e-mail: user-h...@struts.apache.org > > >