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なのはちょっと意外だった。