Struts 2では、ルートネームスペースと同じ動作をしています。つまり、「すべてをキャッチ」として動作しています。私は、アプリケーション内のアクションがURLに名前空間のないものを含め、1つのURLからのみアクセスできるように制限する必要があります。私の理解はこれを行う必要がありますが、私はそれが動作するのを見ていないルート名前空間を使用しています。Struts 2:デフォルトネームスペースと同じ名前空間を持つ
この問題は、Struts 2チュートリアルのEclipse用HelloWorldの例hereで再現できます。
struts.xmlは
<package name="basicstruts2" extends="struts-default">
...
<action name="index">
<result>/index.jsp</result>
</action>
...
</package>
だから、以下のリンクの両方が、index.jspの結果を示し含ま
- はlocalhost:8080/Basic_Struts2_Ant/index.action
- はlocalhost:8080/Basic_Struts2_Ant /foo/index.action
これまでのところ良いです。
私はstruts.xmlを変更した場合
に<package name="basicstruts2" namespace="/foo" extends="struts-default">
- はlocalhost:8080/Basic_Struts2_Ant/index.actionは、 "名前空間/とアクション名のインデックスにマッピングされたアクションはありません。" で失敗
- はlocalhost:8080/Basic_Struts2_Ant/fooの/ index.actionが良い。また index.jspを
を示しています。
今、私はストラット
<package name="basicstruts2" namespace="/" extends="struts-default">
以下のリンクの両方が(名前空間が定義されていないときと同じ)index.jspの結果を示したと言うためにXMLを変更した場合
- はlocalhost:8080/Basic_Struts2_Ant/index.action
- はlocalhost:8080/Basic_Struts2_Ant/fooの/ index.action
名前空間のドキュメントを正しく理解していれば、 localhost:8080/Basic_Struts2_Ant/foo/index.actionは "namespace/fooとアクション名のインデックスにマッピングされたアクションはありません"と失敗します。
私はブラウザのキャッシュを可能性として排除するために、 "foo"を "alksdja"などに置き換えて、他のバリエーションを試しました。
私は、ルート名前空間が何をしているのか誤解しましたか? /foo/index.actionを/index.actionを許可しながら動作させないようにするには?
私の答え[この質問](http://stackoverflow.com/a/8424913/438992)を参照し、それがあなたのために働くかどうかを見てください。 –
はい、それは動作します。ありがとう! – Graham
今、私はstruts.mapper.alwaysSelectFullNamespaceかstruts.enable.SlashesInActionNamesのいずれかの設定が読み込まれているので、URLの途中で余分なものを関連付けるかどうかによって問題を修正します。 – Graham