框架提供了一種鏈接各種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