1

アンヘル・レナードの本からの抜粋、

<view tag>: タグ内にネストされ<flow-definition>、フロー ノードを表す JSF ページを示します。明示的な ID を各ページ (Facelet) パスに関連付けます (さらに、ID で各ページを参照できます)。ページ パスはタグにマップされ、<vdl-document>タグにネストされ<view>ます。このタグの存在はオプションですが、慣例として、少なくとも<view>開始ノード (開始ページ) を示すタグが存在します。特に、デフォルトのもの以外に別の開始ノードを設定する場合は、フローと同じ名前 (ID) のフロー。さらに、オプションの <start-node>ID</start-node>タグを使用して、の ID を示すことができます。<view>カスタム開始ページをマップするタグ。別の方法として、タグの id 属性の値をフロー ID として設定し、カプセル化されたタグのコンテンツをカスタム開始ページのパスとして設定することによって、フローの開始ノードを示すことができます。フロー ID を参照すると、JSF はそのページに移動し、自動的にフローに入ります。

webapp次のように、ディレクトリに関連する4つのページがあるとします。

index.xhtml
registration/registration.xhtml
registration/confirm.xhtml
done.xhtml

著者は、この設定を次のように提案していますfaces-config.xml

<flow-definition id="registration">
        <view id="registration">
            <vdl-document>/registration/registration.xhtml</vdl-document>
        </view>
        <flow-return id="taskFlowReturnIndex">
            <from-outcome>/index</from-outcome>
        </flow-return>
        <flow-return id="taskFlowReturnDone">
            <from-outcome>/done</from-outcome>
        </flow-return>
</flow-definition>

実際に実験してみてわかったのは、

<view id="registration">
    <vdl-document>/registration/registration.xhtml</vdl-document>
</view>

同じ著者によって提唱されているようにオプションです。

これで十分です (idフローを作成する必要がある JSF ビューと同じ名前の属性)。

<flow-definition id="registration">
...
 </flow-definition

さらに、フローは、id属性 <flow-definition id="registration">が JSF ビューの名前と正確に一致する場合にのみ作成されます。つまり、次のようになります。

registration.xhtml

同じ抜粋の一部を繰り返す:

...少なくとも、<view>開始ノード (開始ページ) を示すタグが存在します。特に、 をフローとして使用するフロー内のページで表される の set another start nodeほかに 必要な場合。さらに、オプションのタグを使用して 、カスタム開始ページをマップするタグのを示すことができます。default onesame name (ID)<start-node>ID</start-node>ID<view>

はるかに簡単な言葉で言えば、彼はこのように同じ内にネストして行うことを提案しています<flow-definition>

<view id="confirm">
     <vdl-document>/registration/confirm.xhtml</vdl-document>
</view>

<start-node>confirm</start-node>

index.xhmlしかし、からへ行くことは返されconfirm.xhtmlないことがわかりますtrue

In flow ? #{null != facesContext.application.flowHandler.currentFlow}

index.xhtmlからにナビゲートするときconfirm.xhtmlなど。

助言がありますか?

4

0 に答える 0