在Struts2.5使用通配符的方式實作動态方法調用時報錯,困擾了好久。。。
代碼如下
<package name="default" extends="struts-default" namespace="/">
</package>
<package name="users" namespace="/users" extends="default">
<action name="*_*" class="action.{1}Action" method="{2}">
<result name="login_success">/users/Users_login_success.jsp</result>
<result name="login_failure">/users/Users_login.jsp</result>
</action>
</package>
報錯資訊如下:There is no Action mapped for namespace [/users] and action name [Users_login] associated with context
path [/Hibernate-struts-student].
可以确定的是,我的xml配置沒有問題
在之前的版本,動态使用方法時,要把Struts.xml中添加<constant name="struts.enable.DynamicMethodInvocation" value="true"/>
但是在2.5版本,這個方法行不通。原來在struts2.5 中為了增加安全性,在 struts.xml 添加了這麼個屬性:<allow-methods>方法名(可多個)</allowmethods>,添加完成之後就可以正常運作通配符的配置了。
eg:<allowed-methods>add,addUI,list</allowed-methods>
果然在修改之後可以了,修改後的檔案:
<package name="users" namespace="/users" extends="default">
<allowed-methods>login</allowed-methods>