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 のフロー定義ファイルで行う必要があること (パラメータdestination flow )、 inboundとして渡したいパラメータを定義します:

     <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. flowScopeフロー B では、必要な値を 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 に答える