我的用例:用户以一种形式选择问卷。当表单提交时,开始显示问卷中的问题。
要将问卷发送到流中,我在流的bean中注入包含表单的页面的CDI。
我想知道是否有其他方法可以将问卷发送到流程中。如果有几种方法,最好的方法是什么?
发布于 2014-01-21 08:46:33
您可以通过表单传递参数,并在初始化流程时调用的初始化器方法中获取这些参数。
表单(只需将inputHidden参数替换为用于选择问卷的任何内容)
<h:form id="myForm" prependId="false">
<h:commandLink value="Enter myFlow" action="my-flow"/>
<h:inputHidden id="parameter" name="parameter" value="8"/>
</h:form>
流
@Produces @FlowDefinition
public Flow defineFlow(@FlowBuilderParameter FlowBuilder flowBuilder) {
String flowId = "my-flow";
flowBuilder.id("", flowId);
flowBuilder.initializer("#{myFlowBean.startFlow()}");
...
}
背豆
@Named
@FlowScoped("my-flow")
public class MyFlowBean implements Serializable {
public void startFlow() {
String parameter = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("parameter");
//now do sthg with the parameter, such as fetching the questionnaire
....
}
}
有关更多细节,请参见this answer
发布于 2015-09-24 10:44:46
添加到“thomas.g”的有用答案:
我也遇到了同样的问题,但无法用hiddenInput方法修复它。尽管存在prependId="false“属性,但我使用的primefaces :dataTable元素更改了我的id和隐藏输入字段的名称。这个问题可以用h:commandLink元素中的f:param元素来解决:
<h:commandLink value="Enter myFlow" action="my-flow" >
<f:param name="parameter" value="8"/>
</h:commandLink>
我希望这对有类似问题的人有帮助。
发布于 2018-03-01 07:27:59
这可以在流xml文件中使用初始化器标记来完成。
<initializer>
#{myFlowBean.startFlow()}
</initializer>
调用流作用域bean中的初始化方法
https://stackoverflow.com/questions/18743007
复制相似问题