Spring webflow:移动视图状态

时间:2008-10-06 13:55:31

标签: java spring spring-webflow

在spring webflow中,我需要实现一个导航栏,允许“退后”或恢复流向上一个视图之一。

例如:

  • 查看1 =登录
  • 查看2 =我的信息
  • 查看3 =我的消息
  • 查看4 =关闭会话

对于这个例子,我想从视图4页面返回到视图2。

2 个答案:

答案 0 :(得分:4)

这取决于你如何做到这一点。如果你在一个流程中这样做,你会有这样的事情:

<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,这是您的信息视图。

使用子流程很棘手。您需要对其进行链接:调用子流,如果发出事件信号表明您需要以特定状态结束流,则立即执行此操作。

例如,假设您的流量链是login-&gt; information-&gt; message-&gt; close。

在关闭流程中,结束状态将是“returnToInformation”。

消息流在=“returnToInformation”上转换为=“returnToInformation”。

“returnToInformation”也是消息流中的结束状态。

然后,信息流在=“returnToInformation”上转换为=“displayInformationPage”,然后重新显示信息页面。

答案 1 :(得分:0)

我通过定义表示选项卡的一些全局流来完成此操作。然后,我定义了一个对象,该对象表示流上的选项卡,并指示当前选项卡是否处于活动状态。当用户移动选项卡时,我根据需要更新了选项卡对象。

当用户单击其中一个选项卡时,它使用全局流程允许它们在选项卡之间移动(对于我的实现,我发现更容易调用操作而不是查看状态,因为您可能会发现视图可能会更改根据用户的互动情况,你可能需要重新计算它们。)

对于标签栏本身,我把它放在一个JSP中,然后放在每个表单的顶部,这使得更新更容易。

它不是最好的解决方案,但确实有效。

祝你好运。