2012-07-30 34 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。这应该有点亮。

相关问题