我是SWF的新手,我意外地继承了SWF应用程序的维护。
用户在屏幕顶部有一个水平菜单,其中显示5个选项。单击其中一个时,将在屏幕中加载一个portlet。
两天前,我收到了一项任务:每当用户点击其中一个选项时,portlet必须忽略其先前的状态并重新开始。
示例:其中一个portlet称为“SEARCH”,另一个称为“REPORTS”。今天,如果用户点击“搜索”,则appl会显示一个小表单和一个“GO”按钮。单击“开始”后,应用程序会显示结果列表,每个结果都带有一个编辑按钮。单击以编辑其中一个后,appl将显示所选结果的详细信息。到现在为止还挺好。
继续该示例,假设用户现在单击菜单中的“REPORTS”选项。 appl将显示报告portlet,其中包含自己的内容。再一次,到目前为止,这么好。
但是,如果用户现在再次单击“搜索”,则portlet将显示其上一个状态,即上一个搜索项的编辑。
我被要求改变这种行为,因此每次用户点击“搜索”时,它都会打开为空,也就是说,portlet的webflow将从头开始。
我该怎么做?有人可以帮助我吗?
我搜索了SMF的文档,并研究了spring-webflow-config-2.0.xsd文件,寻找这种情况的一些特定配置,但无济于事。
谢谢,
FQL
答案 0 :(得分:2)
尝试这种方法:
创建一个新的流定义xml文件,您应该在其中放置一组将重定向到流的结束状态,以及一组将转换为结束状态的全局转换。因此,您应该为每个菜单项添加一个结束状态和一个全局转换。
<end-state id="searchMenuItem" view="flowRedirect:searchFlowName" />
<end-state id="reportsMenuItem" view="flowRedirect:reportsFlowName" />
<global-transitions>
<transition on="searchMenuItem" to="searchMenuItem" />
<transition on="reportsMenuItem" to="reportsMenuItem" />
</global-transitions>
将此流定义添加到流注册表,并将所有流添加为父流。因此,所有流程都应该具有可见的结束状态和全局转换。
编辑菜单链接以使用全局转换:
<a href="${flowExecutionUrl}&_eventId=searchMenuItem">Search</a>
<a href="${flowExecutionUrl}&_eventId=reportsMenuItem">Reports</a>
这会导致当用户点击菜单项时,其全局转换将触发,从而导致转换到终端区域,并且流程重定向到所需的流程。
希望这有帮助。