我的用例:用户在表单中选择调查问卷。提交表单后,将启动面孔流以显示调查问卷的问题。
为了将调查问卷发送到流程,我在流程的 bean 中注入(inject)包含表单的页面的 CDI bean。
请问是否还有其他方式可以将问卷发送到流程中。如果有多种方法,最好的方法是什么?
最佳答案
您可以通过表单传递参数,并在流程初始化时调用的初始化方法中获取它们。
表单(只需将 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()}");
...
}
支持bean
@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了解更多详情
关于jsf-2.2 - 如何将数据发送到faces-flow?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18743007/