我有一个基本的流程示例工作:
src/main/webapp
|
|- index.xhtml
|- flow1
|- flow1-flow.xml
|- flow1.xhtml
Run Code Online (Sandbox Code Playgroud)
index.xhtml有一个简单的表单,用参数输入流:
<h:form>
Click to enter flow1
<h:commandButton action="flow1" value="Flow 1">
<f:param name="testInput" value="hi there"/>
</h:commandButton>
</h:form>
Run Code Online (Sandbox Code Playgroud)
flow1.xhtml显示参数,并允许您在流范围中输入值:
<h:form>
Hi this is page 1.
<h:inputText label="Enter something:" value="#{flowScope.testOutput}"/><br/>
Request parameter: #{param['testInput']}<br/>
<h:commandButton action="returnFromFlow1"/>
</h:form>
Run Code Online (Sandbox Code Playgroud)
flow1-flow.xml只将返回节点定义为"returnFromFlow1"并将其设置为/index.xhtml.
这似乎有效.我想在输入流时实现post-redirect-get,以便浏览器地址栏与视图保持同步.所以我自然尝试了action ="flow1?faces-redirect = true".此更改阻止流程执行..它只是在单击按钮时重新加载index.xhtml.
然后我尝试了action ="flow1/flow1.xhtml?faces-redirect = true".这会加载页面并按预期重定向,但流程未初始化.当我在流程中提交表单时,我收到有关flowScope解析为null的错误.
做了一点研究,我找到了一个提示,设置"to-flow-document-id"来强制它初始化流程.所以我添加到我的命令按钮.没变.
有关如何实现这一目标的任何想法?