我用Struts 2的Web應用程序與下面的操作映射工作通配符動作映射:下劃線和Struts 2的
<action name="something_*" class="foo.whatever.MyAction" method="{1}">
<result>blah/myJsp.jsp</result>
...
</action>
所以,如果我加載URL /something_load.action
,它調用MyAction.load()
,等等。小菜一碟。令我感到困惑的是,加載/something.action
也有效(我想它是調用方法)。 這怎麼可能?我的動作映射應該與「something_」匹配,但我的網址中沒有underescore。 它應該給我一個錯誤!不應該嗎?
我已經仔細檢查了struts配置文件中沒有「something.action」的另一個映射。我也檢查了web.xml文件,以防萬一......如果我使用通配符映射,我會想到的唯一解釋是在Struts中忽略下劃線。但是,加載/something_load.action
,/some_thing_lo_ad.action
...並沒有什麼區別,事實並非如此。
我知道這一定是一個非常不好的問題,但我一直無法解決這個謎題,既沒有通過Stackoverflow的問題也沒有看到Strutsdocumentation。
這是主要的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>
似乎最後一個下劃線正在「修剪」(顯然,那些在動作名稱中間的不是)。奇怪的東西,+1 –
@AndreaLigios感謝您的編輯,我想知道爲什麼我的XML顯示沒有語法突出:) – AJPerez
是的,如果朗不能完全由標籤推斷,你需要添加語法熒光筆代碼(將這個問題標記爲「xml」只是爲了讓它格式化是不對的:) –