Hi Frans,
Unfortunately at the moment you can't mix conventions within the same
Struts2 webapp. The trouble is the REST plugin overrides a lot of the
default behaviour rather than augmenting it. Right now if your commit to
REST conventions it'll apply to the entire webapp. With some effort it
may be possible to use a CompoundActionMapper to to the mix URL-mapping
schemes though.
It sounds like you're mainly interested in nice URLs...
If you just want nice URLs and not actually REST conventions you may
prefer the SmartURLs plugin. It's being merged into Struts2.1
Convention plugin but is available for 2.0 now. It does a lot, but
generally it provides that actions in packages at
com.mycompany.actions.bla.BlaAction are available at the URL
/bla/bla.action and further that the URL /bar/ will execute
com.mycompany.actions.bla.IndexAction, and so on. If you add blank
extension handline you get some nice urls: /bla/bla -> bla.BlaAction
If you want search-engine friendly URLs that contain parameters in the
path there are two options:
- the RestfulActionMapper in Struts2.0 allows URLs like
/name1/value1/name2/value2/bla.action where name1 and name2 are
properties in BlaAction. It can be used with a CompoundActionMapper to
mix this with the Default action mapping, or
- the NamedVariablePatternMatcher in Struts2.1 allows action
namespaces to contain properties. eg. /{state}/{city}/bla.action where
state and city are properties of the BlaAction
AFAIK, the NamedVariablePatternMatcher can be used with either default
or REST conventions. It can't be used at the same time as default
wildcards implementation though (/*blaAction). This feature is
relatively new and undocumented.
It's enabled like this in struts.xml:
<bean type="com.opensymphony.xwork2.util.PatternMatcher"
name="namedVariablePatternMatcher"
class="com.opensymphony.xwork2.util.NamedVariablePatternMatcher"/>
<constant name="struts.patternMatcher"
value="namedVariablePatternMatcher"/>
<constant name="struts.mapper.alwaysSelectFullNamespace" value="true"/>
And used like this:
@Namespace("/{country}/{state}")
public class SuburbController implements ModelDriven<Object> {
public void String setCountry(String country) ...
public void String setState(String state)...
...
}
(The class above is a REST-controller model-driven action but it should
work with normal actions too). At this time (Jan08) I can't recommend
the NamedVariablePatternMatcher unless you're willing to dive into the
Struts2 source as issues arise as its quite experimental.
Hope that helps,
Jeromy Evans
Frans Thamura wrote:
hi there
i just want to know, how to mixe the code between S2 and with REST under one
container.
any idea?
or anyone have an example that 'this is the old' and 'this is the REST'
still cannot get how can .action become /bla/bla
------------------------------------------------------------------------
No virus found in this incoming message.
Checked by AVG Free Edition.
Version: 7.5.516 / Virus Database: 269.19.6/1230 - Release Date: 17/01/2008 4:59 PM
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]