struts2中通配符与默认action冲突!
struts2 配置片段
<package name="default" extends="struts-default">
<default-action-ref name="pageNotFound"></default-action-ref>
<action name="pageNotFound" class="com.TD.action.DefaultAction"></action>
</package>
<package name="login" namespace="/login" extends="default">
<action name="*" class="com.TD.action.LoginAction" method="{1}" >
<result name="success_jsp">/success.jsp</result>
</action>
</package>
当不使用通配符时(<action name="login" class="com.TD.action.LoginAction" method="login" >),访问命名空间login下的不存在的action(http://localhost:8080/TD/login/asd.action),能正常被默认action捕获处理。
但是使用了通配符后(<action name="*" class="com.TD.action.LoginAction" method="{1}" >),再访问不存在的action时,页面会报struts500,控制台会报(
严重: Exception occurred during processing request:com.TD.action.LoginAction.asd()
java.lang.NoSuchMethodException: com.TD.action.LoginAction.asd()
)。
求解。
------解决方案--------------------
用通配符之后,无论你在/login/后输入任意字符都默认走了com.TD.action.LoginAction这个类,也就是说<action name="pageNotFound" class="com.TD.action.Default