带有链接的简单菜单系统,应显示特定的报告参数页面。以下是它的工作原理:
reports-flow.xml
包含:
<view-state id="list" view="flow/reports/list">
<transition on="parameters" to="parameters">
<set name="flowScope.reportKey" value="requestParameters.key" />
<evaluate expression="reportService.createReport()" result="flowScope.report" />
</transition>
</view-state>
<view-state id="parameters" model="report" view="flow/reports/parameters">
<on-render>
<set name="viewScope.pageId" value="'osre02'" />
<evaluate expression="siteService.find()" result="viewScope.siteList" />
<evaluate expression="agencyService.findActiveMunicipalities()" result="viewScope.municipalityList" />
</on-render>
<transition on="run" to="redirect" />
</view-state>
flow/reports/list
页面包含:
<li><a href="${flowExecutionUrl}&_eventId=parameters&key=report_name">Report Name</a></li>
以下任何一项工作都不能退出系统搜索网络流程,并在传递报告参数键时输入报告网络流程。
<a href="reports?_flowId=reports&_eventId=parameters&key=report_name">Report Name</a>
<a href="reports?_eventId=parameters&key=report_name">Report Name</a>
<a href="reports?execution=${flowExecutionKey}&_eventId=parameters&key=report_name">Report Name</a>
<a href="${flowExecutionUrl}&_eventId=parameters&key=report_name">Report Name</a>
在System Search网络流程中,出现以下错误:
请求处理失败;嵌套异常是org.springframework.webflow.engine.NoMatchingTransitionException:没有发现事件&#39;参数&#39;在州&#39;标准&#39;流量/流量/会话搜索&#39; - 有效的过渡标准是数组[今天搜索] ......等等。
在报表流中已经单击其中一个菜单链接时,此错误消失。这是有道理的,因为系统搜索不了解报告流程和菜单(理想情况下,它不应该)。
要使报告流解析为全局菜单,可以按如下方式设置全局转换:
<global-transitions>
<transition on="parameters" to="parameters">
<set name="flowScope.reportKey" value="requestParameters.key" />
<evaluate expression="reportService.createReport()" result="flowScope.report" />
</transition>
</global-transitions>
使用以下命令自动装配文件配置:
@Configuration
public class SharedWebFlowConfig extends AbstractFlowConfiguration {
@Bean
public FlowDefinitionRegistry sharedFlowRegistry() {
return getFlowDefinitionRegistryBuilder().addFlowLocation("/WEB-INF/flow/common/global-transitions.xml", "global-transitions").build();
}
}
构思部分中描述的设置会导致以下错误:
java.lang.IllegalArgumentException:找不到具有id&#39;参数&#39;的状态在流程&流程/会话搜索&#39; - 已知州ids ......
如何从parameters
全球范围内制作reports-flow.xml
观看状态?
什么是更好的方法?
答案 0 :(得分:0)
使用<on-start>
和<decision-state>
将请求参数带入流量范围并获取模型:
<on-start>
<set name="flowScope.reportKey" value="requestParameters.key" type="string" />
<evaluate expression="reportService.createReport()" result="flowScope.report" />
</on-start>
<decision-state id="direct">
<if test="flowScope.reportKey == null" then="list" else="parameters" />
</decision-state>
使用应用程序中任何位置(和任何流程)的超链接来更改流程:
<a href="reports?key=report_name">Report Name</a>
如果flowScope.reportKey
为空,则流程将指向列表页面。如果flowScope.reportKey
不为空,则流程将指向参数页面。
不需要进行全局转换。