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
>
>
>

Reply via email to