由于result type="redirect-action"所以index.action中获取不到delete方法中处理得到的ActionMessage,ActionError;
解决办法:
修改<result type="redirect-action">index</result>为:
<result type="chain">index</result>可;
result type的类型说明如下:
Chain : 用来处理Action链
Dispatcher : 用来转向页面,通常处理JSP
FreeMarker : 处理FreeMarker模板
HttpHeader : 用来控制特殊的Http行为
Redirect : 重定向到一个URL
Redirect-Action : 重定向到一个Action
Stream : 向浏览器发送InputSream对象,通常用来处理文件下载
Velocity :处理Velocity模板
XLS :处理XML/XLST模板
PlainText :显示原始文件内容,例如文件源代码
S2PLUGINS:Tiles : 结合Tile使用
在struts2-core-2.x.jar中可以找到struts-default.xml文件,这个文件内已经有了对于所有类型Result的定义;
这是一个简单的例子
public class a extends ActionSupport {
private String name="a";
public String execute(){
return SUCCESS;
}
}
public class b extends ActionSupport {
private String name="b";
public String execute(){
System.out.println(name);
return SUCCESS;
}
}
struts.xml
<action name="b" class="com.test.one.b">
<result>welcome.jsp</result>
</action>
<action name="a" class="com.test.one.a">
<result name="success" type="chain">b</result>
</action>
如果访问a.action他会根据struts.xml转到b.action,这时他打印什么呢??
会不会传递属性了呢??
引用
b
这是打印结果.....
但如果给 a加上get方法
b加上set方法,就可以了!!并且这两个类的参数的名字一定要相同!
这其实是chain拦截器起的作用。
如果上面的struts.xml不加type=“chain”,那样他会提示找不到b
因为加了chain之后 他才会包装参数成ActionName
所以就无法传递下去!