2014-02-21 85 views
1

繼續處於'下一個'狀態我的場景是這樣的:我需要實現一種授權檢查在多個流中進行。現在我流的一個看起來是這樣的:Spring webflow:從決策狀態

<flow parent="myparent-flow"> 
    <decision-state id="checkAuthorization"> 
     <if test="bean.notAuthorized" 
      then="redirectToSomePage" 
      else="view1" /> 
    </decision-state> 
    <view-state id="view1" /> 
    <!-- ... --> 
</flow> 

我需要實現一個數量的流相同的授權檢查,而我可以複製粘貼同樣的邏輯,無論我真的到,如果可能的話想,把它放在父流中,它已經用來執行每個流的邏輯啓動。

這裏的問題是決策狀態中的其他類。由於它是許多子流的父流,因此它不會知道子流中第一個狀態的名稱。我想這樣使用它,它會以某種方式繼續並執行子流中存在的流中的下一個狀態。我的最佳解決辦法是這樣的:

<flow> <!-- flow name = myparent-flow --> 
    <decision-state id="checkAuthorization"> 
     <if test="bean.notAuthorized" 
      then="redirectToSomeFlow" 
      else="continueExecutionInChildFlow" /> 
    </decision-state> 
    <end-state id="redirectToSomeFlow" view="flowRedirect:someFlow" /> 
</flow> 

這將被定義爲我的所有數據流的父流,這樣我就不必重複此邏輯。春天可以做這樣的事嗎?

+0

是不是Spring Security檢查授權的選項? –

+0

這實際上不是授權,更重要的是根據bean值將用戶引導到另一個門戶。 – yzfr1

回答

2

一種可能的方法去實現它可能是通過在特定的流程設置一個變量,以後使用這個變量爲最終狀態重定向,如:

<if test="bean.notAuthorized" 
    then="redirectToSomeFlow" 
    else="${conversationScope.resultView}" /> 

變量可以通過設置:

<set name="conversationScope.resultView" value="'viewName'" />