我有一个可以返回多个事件的视图状态。对于他们中的大多数人来说,有一个我想“评估”的常用 jave 方法。我想做一些不同的事情的地方很少。但是,每个事件都会转换到不同的状态。我的 Web 流代码现在正在多次重复该方法的评估,每个适用的转换一次。当然,如果我想始终评估该方法,我可以在退出时调用它,但由于我不想在所有情况下都这样做,所以我不得不在转换调用中重复它。有没有其他方法可以做到这一点?
坦率
我有一个可以返回多个事件的视图状态。对于他们中的大多数人来说,有一个我想“评估”的常用 jave 方法。我想做一些不同的事情的地方很少。但是,每个事件都会转换到不同的状态。我的 Web 流代码现在正在多次重复该方法的评估,每个适用的转换一次。当然,如果我想始终评估该方法,我可以在退出时调用它,但由于我不想在所有情况下都这样做,所以我不得不在转换调用中重复它。有没有其他方法可以做到这一点?
坦率
这听起来像是一种情况,您可能会考虑将当前在流 XML 本身中编码的一些逻辑移动到对 Action POJO 的调用中。也许在退出时对 Action 的一次调用,传入流请求上下文并让 Action 方法本身(从请求参数)确定是否应该调用您的常用 Java 方法。
像这样的东西:
<view-state id="home" view="home">
<transition on="foo" to="fooView" />
<transition on="bar" to="barView" />
...
<on-exit>
<evaluate expression="fooAction.invokeIfNecessary(flowRequestContext)" />
</on-exit>
</view-state>
过渡到决策状态评估那里,然后与 currentEvent.id 过渡到原始目标 smt,如:
<decision-state id="decision">
<on-entry>
<evaluate ...
</on-entry>
<if test="currentEvent.id=='goruntule'" then="goruntule"/>
<if test="currentEvent.id=='guncelle'" then="guncelle"/>
<if test="currentEvent.id=='sil'" then="sil"/>
</decision-state>