次のアクション マッピングを使用して Struts 2 webapp を使用しています。
<action name="something_*" class="foo.whatever.MyAction" method="{1}">
<result>blah/myJsp.jsp</result>
...
</action>
したがって、URL をロードする/something_load.action
と、 が呼び出さMyAction.load()
れます。簡単なことです。私が困惑している/something.action
のは、ロードも機能することです(メソッドを呼び出していると思いますexecute()
)。それはどのように可能ですか?私のアクション マッピングは「something_」と一致するはずですが、URL にアンダースコアがありません。エラーが発生するはずです!そうじゃない?
Struts 構成ファイルに「something.action」の別のマッピングがないことを再確認しました。念のため、web.xmlファイルもチェックしました...
私が想像できる唯一の説明は、ワイルドカード マッピングを使用すると、Struts ではアンダースコアが無視されるということです。しかし、 load を実行しても違いはあり/something_load.action
ませ/some_thing_lo_ad.action
ん ... これは正しくありません。
これは非常に初歩的な質問であることは承知していますが、Stackoverflow の質問やStrutsの ドキュメントを調べても、ミステリーを解決できませんでした。
これはメインの struts.xml ファイルです。
<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<constant name="struts.devMode" value="false" />
<constant name="struts.freemarker.templatesCache" value="true" />
<package name="default" extends="struts-default">
<!-- interceptors ... -->
<!-- global results for error pages -->
</package>
<!-- lots of includes -->
</struts>