日期:2014-05-20  浏览次数:20626 次

怎么解决default-action-ref和*_*的冲突
<struts>
<!-- 指定全局国际化资源文件 -->
<constant name="struts.custom.i18n.resources" value="mess"/>
<!-- 指定国际化编码所使用的字符集 -->
<constant name="struts.i18n.encoding" value="GBK"/>

<package name="login" extends="struts-default" namespace="/">
<default-action-ref name="default"></default-action-ref>
  <action name="default">
  <result>/default.jsp</result>
  </action>
<action name="login" class="struts2.first.FirstForm">
<result name="success">/welcome.jsp</result>
<result name="error">/err.jsp</result>
</action>
<action name="*_*" class="struts2.second.{1}" method="{2}">
<result name="{2}">/{1}_{2}.jsp</result>
</action>
</package >
<package name="login2" extends="struts-default" namespace="/login">
<action name="login" class="struts2.first.SecondForm">
<result name="success">/welcome.jsp</result>
</action>

</package>
</struts>
总是找不到默认页面,有人说是
<default-action-ref name="default"></default-action-ref>

<action name="*_*" class="struts2.second.{1}" method="{2}">
中的*_*冲突,那应该怎么解决这个冲突

------解决方案--------------------
我测试的结果是*_*貌似会连不带 _ 的字符串匹配(就是假如你输入的字符是abc,他也会匹配到*_*,class就会去找struts2.second.abc),最后我的解决方法是不写*_*,稍微麻烦一点,就是把你的{1}写死,后面的用*,这样就没问题了,例如你写的是一个UserAction,配的时候name="User_*",这样写可能会更好些,看的更清晰,也不会影响default-action-ref的使用
------解决方案--------------------
我一般都是用动态调用,通配符虽然简化了很多代码,但是要约定