我自定义一个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真是怪哉!是我疏忽了什么地方吗?
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真是怪哉!是我疏忽了什么地方吗?
result标签要设置属性name="failed"
<result name="return_value">path</result>
如果不设置result的name属性,则默认返回的是"success"字符串或者SUCCESS常量.此处并不是你的通配符问题,你的通配符没有用错,只是你设置<result>标签的时候,没有设置name属性,那么系统默认你返回的就是success, 如果想返回其它字符串,则必须配置name属性,且值与你返回的字符串一样
<result name="return_value">path</result>
如果不设置result的name属性,则默认返回的是"success"字符串或者SUCCESS常量.此处并不是你的通配符问题,你的通配符没有用错,只是你设置<result>标签的时候,没有设置name属性,那么系统默认你返回的就是success, 如果想返回其它字符串,则必须配置name属性,且值与你返回的字符串一样