Java 从全局菜单转换到参数化webflow视图状态 出身背景
带有链接的简单菜单系统应显示特定的报告参数页面。下面是它的工作原理:Java 从全局菜单转换到参数化webflow视图状态 出身背景,java,spring,jsp,spring-webflow,transitions,Java,Spring,Jsp,Spring Webflow,Transitions,带有链接的简单菜单系统应显示特定的报告参数页面。下面是它的工作原理: 用户单击“搜索”菜单,切换到系统搜索web流 用户单击“报告”子菜单(例如,“遇到错误…”) 用户将转到“遇到的错误”报告 reports flow.xml包含: <view-state id="list" view="flow/reports/list"> <transition on="parameters" to="parameters"> <set name="f
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>
<li><a href="${flowExecutionUrl}&_eventId=parameters&key=report_name">Report Name</a></li>
问题
在传递报表参数键的同时,以下操作均无法退出系统搜索web流并输入报表web流
<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>
问题
idea部分中描述的设置会导致以下错误:
java.lang.IllegalArgumentException:在流“flow/sessionSearch”中找不到id为“parameters”的状态--已知状态id
如何从reports flow.xml
全局设置parameters
视图状态
更好的方法是什么?使用
和
将请求参数引入流范围并获得模型:
<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
不为空,则流将指向参数页面
不需要全局转换
<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>