【发布时间】:2015-03-07 04:35:08
【问题描述】:
背景
简单的菜单系统,带有应显示特定报告参数页面的链接。以下是它的工作原理:
- 用户单击“搜索”菜单,切换到系统搜索网络流程。
- 用户点击“报告”子菜单(例如,“遇到的错误...”)。
- 用户被带到“遇到的错误”报告。
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>
错误
从系统搜索 web 流中,出现以下错误:
请求处理失败;嵌套异常是 org.springframework.webflow.engine.NoMatchingTransitionException:在流 'flow/sessionSearch' 的状态 'criteria' 中出现事件 'parameters' 时未找到转换 - 有效的转换条件是 array[search, today] ...等等
在报表流中单击其中一个菜单链接时,此错误会消失。这是有道理的,因为系统搜索不知道报告流程和菜单(理想情况下不应该)。
想法
要使报表流解析为全局菜单,可以按如下方式设置全局转换:
<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:在流“flow/sessionSearch”中找不到 ID 为“parameters”的状态——已知状态 ID ...
如何从reports-flow.xml 全局创建parameters 视图状态?
什么是更好的方法?
【问题讨论】:
标签: java spring jsp spring-webflow transitions