struts中Action中的传递

由于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
所以就无法传递下去!

你可能感兴趣的:(freemarker,xml,jsp,struts,velocity)