packageのnamespace

struts.xmlのpackageでnamespaceを指定しないと "" となり、これは fallback とみなされる。
つまり namespace が完全に一致するパッケージにアクションが見つからないときに fallback から探される。

<package                   name="MyDefault1" extends="struts-default">
    <action name="foo">
       :
    </action>
</package>
<package namespace="/hoge" name="MyDefault2" extends="struts-default">
    <action name="bar">
       :
    </action>
</package>
<package namespace="/"     name="MyDefault3" extends="struts-default">
    <action name="baz">
       :
    </action>
</package>

となっていてコンテキストパスが http://domain/app の場合に

http://domain/app/foo.action             ○
http://domain/app/bar.action             ×
http://domain/app/baz.action             ○

http://domain/app/hoge/foo.action        ○
http://domain/app/hoge/bar.action        ○
http://domain/app/hoge/baz.action        ×

http://domain/app/hogehoge/foo.action       ○
http://domain/app/hogehoge/bar.action       ×
http://domain/app/hogehoge/baz.action     ×

http://domain/app/fuga/hoge/foo.action      ○
http://domain/app/fuga/hoge/bar.action    ×
http://domain/app/fuga/hoge/baz.action    ×

http://domain/app/hoge/fuga/foo.action   ○
http://domain/app/hoge/fuga/bar.action   ○
http://domain/app/hoge/fuga/baz.action    ×

となった、最後の hoge/fuga/bar がOKなのはちょっと意外だった。