Hi,

I've tried to answer your questions below based on my interpretation of the
documentation.

On Fri, Nov 5, 2010 at 8:33 AM, maven apache <apachemav...@gmail.com> wrote:

> I meet some problem when I try to learn the namespace of struts2,I am using
> struts-2.2.1.
>
> After read the docs at:
> http://struts.apache.org/2.2.1/docs/namespace-configuration.html
>
> I am confused for the following reason:
>
> The example:
>
> <package name="default">
>
>    <action name="foo" class="mypackage.simpleAction">
>
>        <result name="success" type="dispatcher">greeting.jsp</result>
>
>    </action>
>
>    <action name="bar" class="mypackage.simpleAction">
>
>        <result name="success" type="dispatcher">bar1.jsp</result>
>
>    </action>
> </package>
>
> <package name="mypackage1" namespace="/">
>
>    <action name="moo" class="mypackage.simpleAction">
>
>        <result name="success" type="dispatcher">moo.jsp</result>
>
>    </action>
> </package>
>
> <package name="mypackage2" namespace="/barspace">
>
>    <action name="bar" class="mypackage.simpleAction">
>
>        <result name="success" type="dispatcher">bar2.jsp</result>
>
>    </action>
> </package>
>
> This is the explanation:
>
> *If a request is made to /barspace/foo.action, the namespace /barspace will
> be checked for action foo. If a local action is not found, the default
> namespace is checked. In the Namespace Example, there is no action foo in
> the namespace /barspace, therefore the default will be checked and
> /foo.action will be executed.*
>
> I wonder why it is '/foo.action' rather than 'foo.action",it said that it
> will find the foo.action at the default namespace,and the default namespace
> is "",so it should be foo.action,why there is a '/'??
>


I read this as, the default namespace is also relative to the context path.
so http://mycompany.com/myapp/foo.action. The default action has to be
relative to something afterall right? The difference between the default and
/ namespace is that the / namespace isn't checked in the fall back.



>
> ALso problem 2:
>
> *Namespace are not hierarchical like a file system path. There is one
> namespace level. For example if the URL /barspace/myspace/bar.action is
> requested, the framework will first look for namespace /barspace/myspace.*
>
> For the request url "/barspace/myspace/bar.action", the '/barspace/myspace'
> will be splitted as a namespace,so what is the action now? is it the
> "/bar.action" or "bar.action",since the "/" may stand for a root namespace.
>
> I am really confused,anyone can give me a detailed suggestion??
>
>
>
Namespaces not being hierarchical means that you do not have separate
namespaces for /barspace or /myspace in this case. Just one namespace for
/barspace/myspace. It's not like a directory structure on a file system. So
/barspace/myspace/bar.action will look up an action called bar in the
namespace /barspace/myspace/.

Hope this helps.


-- 
Eddy Seager

Reply via email to