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