1

我目前正在使用 JSF 2.2 测试 Java EE 7(只是为了好玩)。尤其是新的 Faces Flow 看起来真的很棒,但我在让我的 PoC 工作时遇到了一些麻烦。

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

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

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

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

问候

4

1 回答 1

1

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

  1. 例如,您已经从流程 A 导航到流程 B。您现在想要从流程 B 导航回流程 A 并将参数传递回流程 A。您需要在流程 A 的流程定义文件中执行什么操作 (参数目标流),定义要作为入站传递的参数:

     <inbound-parameter>
        <name>returnParameterFromB</name>
        <value>#{flowScope.returnParameter}</value>
     </inbound-parameter>
    
  2. 在参数源流(流 B)的流配置文件中将所需参数定义为出站

     <outbound-parameter>
        <name>returnParameterFromB</name>
        <value>#{flowB.returnParameter}</value>
     </outbound-parameter>
    
  3. 在流程 B 中,您必须flowScope通过 EL 赋值将必要的值存储在对象中:

     <h:inputText value="#{flowB.returnParameter}"/>
    

    或在支持@FlowScopedbean 中:

     FacesContext ctxt = FacesContext.getCurrentInstance();
     Map<Object, Object> currentFlowScope = ctxt.getApplication().getFlowHandler().getCurrentFlowScope();
     currentFlowScope.put("returnParameter","value");
    
于 2013-08-15T08:07:44.063 回答