...
Note |
---|
Note, you don't have to use the Convention plugin just to use the REST plugin. The actions of your RESTful application can be defined in XML just as easy easily as through conventionsby convention. The REST mapper doesn't care how the application came to know about your actions when it maps a URL to an invocation of one of it's methods. |
...
If you want to keep using some non-RESTful URL's alongside your REST stuff, then you'll have to provide for a configuration that utilizes to mappers.
Note |
---|
Plugins contain their own configuration. If you look in the Rest plugin jar, you'll see the |
First, you'll need to re-assert the extensions that struts knows about because the rest plugin will have dropped the action ending in it's own settings.
Code Block | ||||
---|---|---|---|---|
| ||||
<constant name="struts.action.extension" value="xhtml,,xml,json,action"/>
|
Next, we will configure the PrefixBasedActionMapper, which is part of the core Struts 2 distribution, to have some URL's routed to the Rest mapper and others to the default mapper.
Code Block | ||||
---|---|---|---|---|
| ||||
<constant name="struts.mapper.class" value="org.apache.struts2.dispatcher.mapper.PrefixBasedActionMapper" />
<constant name="struts.mapper.prefixMapping" value="/rest:rest,:struts"/>
|
And, again, we're relying on the Convention plugin to find our controllers, so we need to configure the convention plugin a bit:
Code Block | ||||
---|---|---|---|---|
| ||||
<constant name="struts.convention.action.suffix" value="Controller"/>
<constant name="struts.convention.action.mapAllMatches" value="true"/>
<constant name="struts.convention.default.parent.package" value="rest-default"/>
<constant name="struts.convention.package.locators" value="example"/>
|
Create Controller Actions
...