在 spring webflow 中,我需要实现一个导航栏,该导航栏将允许“后退”或将流恢复到前一个视图之一。
例如 :
- 查看 1 = 登录
- 查看 2 = 我的信息
- 查看 3 = 我的消息
- 查看 4 = 关闭会话
对于此示例,我想从视图 4 页面返回视图 2。
在 spring webflow 中,我需要实现一个导航栏,该导航栏将允许“后退”或将流恢复到前一个视图之一。
例如 :
对于此示例,我想从视图 4 页面返回视图 2。
这取决于你如何去做这件事。如果您在单个流程中执行此操作,您将拥有如下内容:
<view-state id="loginView" view="login.jsp">
<action-state bean="someBean" method="login" />
<transition on="success" to="informationView" />
</view-state>
<view-state id="informationView" view="information.jsp">
<render-actions>
<action-state bean="someBean" method="retrieveInformation" />
</render-actions>
<transition on="forward" to="messageView" />
<transition on="back" to="loginView" />
</view-state>
<view-state id="messageView" view="message.jsp">
<render-actions>
<action-state bean="someBean" method="retrieveMessage" />
</render-actions>
<transition on="forward" to="closeView" />
<transition on="back" to="informationView" />
</view-state>
<view-state id="closeView" view="logout.jsp">
<transition on="jumpBack" to="informationView" />
</view-state>
“closeView”上的“jumpBack”转换将跳转回视图状态#2,这是您的信息视图。
使用子流程很棘手。你需要链接它:调用一个子流,如果一个事件发出信号表明你需要以特定状态结束你的流,立即这样做。
例如,假设您的流程链是登录->信息->消息->关闭。
在关闭流程中,最终状态将是“returnToInformation”。
消息流在="returnToInformation" 到="returnToInformation" 上有一个转换。
“returnToInformation”也是消息流中的一个结束状态。
然后,信息流在="returnToInformation" 到="displayInformationPage" 上进行转换,然后重新显示信息页面。
我通过定义一些代表选项卡的全局流来做到这一点。然后,我定义了一个对象,该对象表示流上的选项卡并指示当前选项卡是否处于活动状态。当用户在标签中移动时,我适当地更新了标签对象。
当用户点击其中一个选项卡时,它使用全局流来允许它们在选项卡之间移动(对于我的实现,我发现调用操作而不是查看状态更容易,因为您可能会发现视图可能会根据用户交互才能到达那里,因此您可能需要重新计算它们)。
对于标签栏本身,我将它放在一个 JSP 中,然后将其放在每个表单的顶部,这使得更新变得更容易。
它不是最好的解决方案,但它确实有效。
祝你好运。