我自定义一个Action,继承自ActionSupport,然后在配置文件里面通过通配符来映射,代码如下:
TestAction.java:

import com.opensymphony.xwork2.ActionSupport;public class TestAction extends ActionSupport {
public String testFirst() {
return "success";
}
}
struts.xml:
......
<package name="actions" namespace="/actions" extends="struts-default">
        <action name="*_*" class="com.jing.struts2.action.{1}Action" method="{2}">
            <result>/{1}_{2}_tested.jsp</result>
        </action>
   </package>

......然后访问url:
http://localhost:8080/my_app/actions/Test_testFirst此时问题出现:只有将TestAction.testFirst()的返回值设定为“success”的时候能正确显示对应jsp页面。一旦把返回值设定为其他字符串——比如"failed",就是出现异常如下:
No result defined for action com.jing.struts2.action.TestAction and result failed真是怪哉!是我疏忽了什么地方吗?

解决方案 »

  1.   

    自己解决:
    result标签要设置属性name="failed"
      

  2.   

    <result /> 有个name属性,默认情况下name=success的,按照你的配置文件,在action返回的时候,就必须要是"success",如果需要换成其他的字符串,则应该这个字符串也赋值给<result />name属性
      

  3.   

    struts2对Action的配置比较灵活,配置格式为:
    <result name="return_value">path</result>
    如果不设置result的name属性,则默认返回的是"success"字符串或者SUCCESS常量.此处并不是你的通配符问题,你的通配符没有用错,只是你设置<result>标签的时候,没有设置name属性,那么系统默认你返回的就是success, 如果想返回其它字符串,则必须配置name属性,且值与你返回的字符串一样
      

  4.   

    struts2对Action的配置比较灵活,配置格式为:
    <result name="return_value">path</result>
    如果不设置result的name属性,则默认返回的是"success"字符串或者SUCCESS常量.此处并不是你的通配符问题,你的通配符没有用错,只是你设置<result>标签的时候,没有设置name属性,那么系统默认你返回的就是success, 如果想返回其它字符串,则必须配置name属性,且值与你返回的字符串一样