jsf-2.2 - 如何将数据发送到faces-flow?

标签 jsf-2.2 faces-flow

我的用例:用户在表单中选择调查问卷。提交表单后,将启动面孔流以显示调查问卷的问题。

为了将调查问卷发送到流程,我在流程的 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/

相关文章:

jsf - 面孔与可重用 View 一起流动

jsf - 如何访问 EL 中的枚举属性?

javascript - p :commandButton only works with two clicks (JSF 2. 2 错误?)

jsf - JSF 2.2 所需的最低 Tomcat 版本

jsf - 有条件渲染 p :commandLinks

jsf-2.2 - JSF2.2面向流程方法调用节点

ajax - h :commandLink action and f:ajax listener的调用顺序

jsf - 使用 JSF Faces Flow 代替普通导航系统的优势

jsf - 如何退出流?