Struts2 中 Result的 Chain Result,Redirect Action Result,Redirect Result 三者之间的区别

来源:互联网 发布:数据洞察 编辑:程序博客网 时间:2024/04/30 06:11

Chain Result:

这个result调用另外的一个action,连接自己的拦截器栈和result。

 

  • actionName (默认) - 被调用的action的名字
  • namespace - 被调用的action的名称空间. 如果名称空间为空,这默认为当前名称空间
  • method - 用于指定目标action的另一个方法被调用. 如果空,默认为excute方法
Redirect Action Result:

 

这个Result使用ActionMapperFactory提供的ActionMapper来重定位浏览器的URL来调用指定的action和(可选的)namespace. 这个Result比ServletRedirectResult要好.因为你不需要把URL编码成xwork.xml中配置的ActionMapper提供的模式. 这就是说你可以在任意点上改变URL模式而不会影响你的应用程序. 因此强烈推荐使用这个Result而不是标准的redirect result来解决重定位到某个action的情况.

 

  • ActionName (默认) - 重定位到的action名
  • namespace - action的名称空间. 如果为null,则为当前名称空间
  •  

     

Redirect Result

 

调用{@link HttpServletResponse#sendRedirect(String) sendRedirect}方法来转到指定的位置. HTTP响应被告知使浏览器直接跳转到指定的位置(产生客户端的一个新请求). 这样做的结果会使刚刚执行的action(包括action实例,action中的错误消息等)丢失, 不再可用. 这是因为action是建立在单线程模型基础上的. 传递数据的唯一方式就是通过Session或者可以为Ognl表达式的web参数(url?name=value)

 

  • location (默认) - action执行后跳转的地址.
  • parse - 默认为true. 如果设置为false, location参数不会被当作Ognl表达式解析.

 

<result name="success" type="redirect">/displayCart.action?userId=${userId}</result>

------------

Chain result type is used for Action Chaining which means that the source result invokes an entire other action, complete with it's own interceptor stack and result.

 

Redirect Action result type is used to redirect to another Action which means making your source Action, after it has successfully executed, result in a redirect.

 

As a rule, Action Chaining is not recommended. Redirect Result or the Redirect Action Result is preferred over Chain Result.

====================================

Struts2中的<result></result>标签的属性type="redirect"与type="redirect-action"的区别,

type="redirect" 的值可以转到其它命名空间下的action,而redirect-action只能转到同一命名空下的 action,

因此它可以省略.action的后缀直接写action的名称。

原创粉丝点击