Spring webflow 2.3.0 - 如何在表单操作方法中获取flowExecutionKey?

时间:2012-07-30 20:56:01

标签: spring spring-webflow

我在表单操作类中有一些代码需要从flowExecutionKey获取RequestContext。我似乎无法找到有关如何执行此操作的任何文档。我的班级看起来像这样:

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

我知道我真的不应该得到flowExecutionKey,但是我正在处理一些需要它的遗留代码。此方法被称为视图状态的入口操作。我尝试context.getFlowExecutionContext().getKey()但它返回null。 context.getFlowExecutionUrl()也返回null。有没有办法做到这一点?

更新

我正在玩这个,而context.getFlowExecutionContext().getKey()确实在<on-render>而不是<on-entry>中调用方法时得到了flowExecutionKey。值得注意的是,它在<on-entry>期间适用于后来的视图状态。它没有处理的视图状态是我的流程中的第一个视图状态。是否有某些原因我无法在第一个视图状态的<on-entry>中获取flowExecutionKey?

1 个答案:

答案 0 :(得分:3)

<on-entry>回调正在执行到服务器的初始POST期间执行。这将有一个类似http://server/myflow的URL。完成后,webflow将向http://server/myflow?execution=e1s1发出重定向。在此调用期间<on-render>执行。

因此,您在初始<on-render中未获取密钥的原因是尚未分配密钥。您在<on-render>之后看到的密钥实际上是上一个视图的关键。

同时查看RequestContext.getFlowExecutionUrl() - 它会告诉您当前请求的网址。这应该会有所启发。