action链
框架提供了一种链接各种action成为一个定义好的sequence或者workflow。这个特性通过应用Chain Result到一个给定的action而起作用,
通过ChainingInterceptor来拦截他的目标action调用。
注意:作为一个规范,action chaining是不被推荐的,可以使用其他的方式,比如 Redirect After Post技术。
chain result
chain result是一个返回类型,这个返回类型用他自己的拦截器栈和结果调用一个action。这个拦截器允许一个action将一个请求转到目标action,然后传递源action的状态
下面一个例子显示怎么定义sequence。
<package name="public" extends="struts-default">
<!-- Chain creatAccount to login, using the default parameter -->
<action name="createAccount" class="...">
<result type="chain">login</result>
</action>
<action name="login" class="...">
<!-- Chain to another namespace -->
<result type="chain">
<param name="actionName">dashboard</param>
<param name="namespace">/secure</param>
</result>
</action>
</package>
<package name="secure" extends="struts-default" namespace="/secure">
<action name="dashboard" class="...">
<result>dashboard.jsp</result>
</action>
</package>
Chaining Interceptor
如果你需要从链中的前一个action赋值到当前action,你需要使用ChainingInterceptor。这个拦截器将会从请求赋值原始参数,值栈被传递到目标action。源action被值栈
valuestack记住,通过值栈允许目标action访问前action的属性,同样也会使属性能够被chain的最后结果使用,如jsp或者velocity page。
使用action chain的一个共同点是需要提供一个寻找列表。因为这个action从valuestack中得到,他们的属性在视图内是可以访问的。这个功能可以通过在显示页面的ActionTag
框架提供了一种链接各种action成为一个定义好的sequence或者workflow。这个特性通过应用Chain Result到一个给定的action而起作用,
通过ChainingInterceptor来拦截他的目标action调用。
注意:作为一个规范,action chaining是不被推荐的,可以使用其他的方式,比如 Redirect After Post技术。
chain result
chain result是一个返回类型,这个返回类型用他自己的拦截器栈和结果调用一个action。这个拦截器允许一个action将一个请求转到目标action,然后传递源action的状态
下面一个例子显示怎么定义sequence。
<package name="public" extends="struts-default">
<!-- Chain creatAccount to login, using the default parameter -->
<action name="createAccount" class="...">
<result type="chain">login</result>
</action>
<action name="login" class="...">
<!-- Chain to another namespace -->
<result type="chain">
<param name="actionName">dashboard</param>
<param name="namespace">/secure</param>
</result>
</action>
</package>
<package name="secure" extends="struts-default" namespace="/secure">
<action name="dashboard" class="...">
<result>dashboard.jsp</result>
</action>
</package>
Chaining Interceptor
如果你需要从链中的前一个action赋值到当前action,你需要使用ChainingInterceptor。这个拦截器将会从请求赋值原始参数,值栈被传递到目标action。源action被值栈
valuestack记住,通过值栈允许目标action访问前action的属性,同样也会使属性能够被chain的最后结果使用,如jsp或者velocity page。
使用action chain的一个共同点是需要提供一个寻找列表。因为这个action从valuestack中得到,他们的属性在视图内是可以访问的。这个功能可以通过在显示页面的ActionTag
执行一个action,从而获得实现。
翻译自http://struts.apache.org/docs/action-chaining.html