JSF-2.2面向流返回值/集群/流返回

JSF-2.2面向流返回值/集群/流返回,jsf,jsf-2,jsf-2.2,java-ee-7,Jsf,Jsf 2,Jsf 2.2,Java Ee 7,我目前正在用JSF2.2测试JavaEE7(只是为了好玩)。特别是新面孔流看起来非常棒,但是我在让我的PoC工作时遇到了一些麻烦 问题: 1.如果我从另一个流调用一个流,是否可以检查当前流是否被另一个流“调用” 我找到的唯一解决方案是将一个特殊参数传递给子流 二,。 如果我通过-flow.xml中的流调用定义调用其他流(例如,我可以选择某个用户的流)。如何将返回值传递给父流(例如,所选用户) 三,。 Glassfish 4总是抱怨flowHandler将对象放入http会话,这是不可序列化的。这

我目前正在用JSF2.2测试JavaEE7(只是为了好玩)。特别是新面孔流看起来非常棒,但是我在让我的PoC工作时遇到了一些麻烦

问题: 1.如果我从另一个流调用一个流,是否可以检查当前流是否被另一个流“调用”

我找到的唯一解决方案是将一个特殊参数传递给子流

二,。 如果我通过-flow.xml中的流调用定义调用其他流(例如,我可以选择某个用户的流)。如何将返回值传递给父流(例如,所选用户)

三,。 Glassfish 4总是抱怨flowHandler将对象放入http会话,这是不可序列化的。这是虫子吗?如果不是,这是否意味着JSF2.2分别不可群集?如果群集节点崩溃,所有打开的流都将丢失


关于

您对(1)的要求并不完全清楚,但FacesFlow确实提供了
flowScope
,您可以使用它存储几乎任何您想要的内容。它的内容在当前流的范围内可用

  • 例如,您已从流A导航到流B。您现在希望从流B导航回流A,并将参数传递回流A。您需要在流A的流定义文件(参数目标流)中执行的操作是,将要传递的参数定义为入站

     <inbound-parameter>
        <name>returnParameterFromB</name>
        <value>#{flowScope.returnParameter}</value>
     </inbound-parameter>
    
    或者在backing
    @FlowScoped
    bean中:

     FacesContext ctxt = FacesContext.getCurrentInstance();
     Map<Object, Object> currentFlowScope = ctxt.getApplication().getFlowHandler().getCurrentFlowScope();
     currentFlowScope.put("returnParameter","value");
    
    FacesContext-ctxt=FacesContext.getCurrentInstance();
    Map currentFlowScope=ctxt.getApplication().getFlowHandler().getCurrentFlowScope();
    currentFlowScope.put(“返回参数”、“值”);
    

  • 不完全清楚您对(1)的要求,但FacesFlow确实提供了
    flowScope
    ,您可以使用它存储几乎任何您想要的内容。它的内容在当前流的范围内可用

  • 例如,您已从流A导航到流B。您现在希望从流B导航回流A,并将参数传递回流A。您需要在流A的流定义文件(参数目标流)中执行的操作是,将要传递的参数定义为入站

     <inbound-parameter>
        <name>returnParameterFromB</name>
        <value>#{flowScope.returnParameter}</value>
     </inbound-parameter>
    
    或者在backing
    @FlowScoped
    bean中:

     FacesContext ctxt = FacesContext.getCurrentInstance();
     Map<Object, Object> currentFlowScope = ctxt.getApplication().getFlowHandler().getCurrentFlowScope();
     currentFlowScope.put("returnParameter","value");
    
    FacesContext-ctxt=FacesContext.getCurrentInstance();
    Map currentFlowScope=ctxt.getApplication().getFlowHandler().getCurrentFlowScope();
    currentFlowScope.put(“返回参数”、“值”);
    

  • 到3。找到这个我想我的glassfish使用的是旧版本的JSFTo 3。我认为我的glassfish使用的是旧版本的JSF,但并没有让您的示例正常工作。未在父流(A)中设置currentFlowScope中的值。我认为该值将被设置为子流(B),在退出流后该子流不可用。你能提供一个流a和B(-flow.xml)@urbiwanus的完整示例吗?如果这个示例不起作用,为什么你要将答案标记为正确的解决方案?我使用上面的示例来了解。很抱歉将此标记为完全正确,但我指出了正确的方向direction@urbiwanus-为了最终解决问题,您做了什么?你可以自己发布一个完整的答案并接受它,这将很难,因为我不再从事这个项目,我没有访问源文件的权限。你的示例没有运行。未在父流(A)中设置currentFlowScope中的值。我认为该值将被设置为子流(B),在退出流后该子流不可用。你能提供一个流a和B(-flow.xml)@urbiwanus的完整示例吗?如果这个示例不起作用,为什么你要将答案标记为正确的解决方案?我使用上面的示例来了解。很抱歉将此标记为完全正确,但我指出了正确的方向direction@urbiwanus-为了最终解决问题,您做了什么?你可以发布一个完整的答案,并接受它,这将是困难的,因为我不再在这个项目上工作了,我没有访问源文件