我在表单操作类中有一些代码,需要从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?

最佳答案

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

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

还要看看RequestContext.getFlowExecutionUrl()-这将告诉您当前请求的URL。这应该会有所启发。

08-04 04:59