嗨,我将使用一个方法来遍历后台bean中的流程步骤:
transition(FacesContext context, Flow sourceFlow, Flow targetFlow, FlowCallNode outboundCallNode, String toViewId);
javax.faces.flow.FlowHandler
或其他方式
例如:public void startFlow(){
// in this example we dont use jsf tags
// (<h:commandButton /> and <h:commandLink />) to navigate user through flow steps
FlowHandler handler = context.getApplication().getFlowHandler();
Flow targetFlow = handler.getFlow(context, "", "registerFlow");
boolean isAdmin = checkIfAdmin();
if(isAdmin){
// here we forward user to viewNode of flow that name step1
handler.transition(context, null, targetFlow, null, "step1");
}
else{
// here we forward user to viewNode of flow that name step1ForAdmin
handler.transition(context, null, targetFlow, null, "step1ForAdmin");
}
}
在backing bean中有可能这样做吗?或者还有什么别的方法?
FlowHandler是一个抽象类,用于JSF框架的内部使用。如果您想导航到JSF流的一个或另一个入口节点,只需返回目标节点的名称进行导航(只允许HTTP POST)。或者您可以通过方法调用节点或交换节点进入流程,并在那里实现所需的导航条件。
你可以阅读这篇文章并从GitHub下载样例项目。它将向您展示一些与JSF流相关的技术。