我在表单操作类中有一些代码需要从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?
答案 0 :(得分:3)
<on-entry>
回调正在执行到服务器的初始POST期间执行。这将有一个类似http://server/myflow
的URL。完成后,webflow将向http://server/myflow?execution=e1s1
发出重定向。在此调用期间<on-render>
执行。
因此,您在初始<on-render
中未获取密钥的原因是尚未分配密钥。您在<on-render>
之后看到的密钥实际上是上一个视图的关键。
同时查看RequestContext.getFlowExecutionUrl()
- 它会告诉您当前请求的网址。这应该会有所启发。