1、错误原因
我的package中共有两个action,第一个是默认action,用于访问的action不存在时候的出错处理,第二个是通配符方式写的action,name采用*_*形式的全通配符。配置好了,访问默认action时候会报错,但如果第二个action的class属性的包名中也包含通配符,如调整之后的代码中的{3},就可以正常访问默认action,不知道什么原因,估计是bug。
2、出错时候的struts.xml的package部分代码
<struts> <package name="default" namespace="/" extends="struts-default" strict-method-invocation="false"> <!--默认action的使用:当用户要访问的action有误的时候自动跳转到该页面--> <default-action-ref name="index" /> <action name="index"> <result>/error.jsp</result> </action> <action name="*_*" method="{2}" class="com.icheny.action.{1}Action"> <result>/result.jsp</result> <result name="add">/{2}.jsp</result> <result name="update">/{2}.jsp</result> </action> </package> </struts>
3、第二个action的class的包名中增加一个通配符之后的struts.xmlpackage部分代码
<package name="default" namespace="/" extends="struts-default" strict-method-invocation="false"> <!--默认action的使用:当用户要访问的action有误的时候自动跳转到该页面--> <default-action-ref name="index" /> <action name="index"> <result>/error.jsp</result> </action> <action name="*_*_*" method="{2}" class="com.icheny.{3}.{1}Action"> <result>/result.jsp</result> <result name="add">/{2}.jsp</result> <result name="update">/{2}.jsp</result> </action> </package>