2012-07-30 33 views
3

我在表單動作類中有一些代碼需要從RequestContext獲取flowExecutionKey。我似乎無法找到有關如何執行此操作的任何文檔。我的類看起來是這樣的:Spring webflow 2.3.0 - 如何在form action方法中獲取flowExecutionKey?

public class MyFormAction extends FormAction 
{ 
    public Event doStuff(RequestContext context) 
    { 
     String flowExecutionKey = ...?? 
     ... 
    } 
} 

我知道,我真的不應該需要不斷得到flowExecutionKey,但我處理,要求它的一些遺留代碼。該方法被稱爲視圖狀態的輸入動作。我試過context.getFlowExecutionContext().getKey(),但它返回null。 context.getFlowExecutionUrl()也返回null。有沒有辦法做到這一點?

UPDATE

我玩這個周圍多一些,和context.getFlowExecutionContext().getKey()確實得到了flowExecutionKey時調用該方法在<on-render>而不是<on-entry>。值得注意的是,它在<on-entry>期間在稍後的視圖狀態下工作。視圖狀態不工作是我流程中的第一個視圖狀態。是否有一些原因,我不能在第一視圖狀態<on-entry> flowExecutionKey?

回答

3

<on-entry>回調在初始化POST期間執行到服務器。這將有一個像http://server/myflow的URL。完成後,webflow將發出重定向到http://server/myflow?execution=e1s1。在此呼叫期間,執行<on-render>

因此,您在初始<on-render中沒有獲得密鑰的原因是還沒有分配密鑰。而且您在後面看到的關鍵字<on-render> s實際上是之前的視圖的關鍵。

也看看RequestContext.getFlowExecutionUrl() - 它會告訴你當前請求的URL。這應該有點亮。

相關問題