web-dev-qa-db-ja.com

<f:facet>は何をし、いつ使用する必要がありますか?

タグ<f:facet>に問題があります。私はそれを使用するコードの他の例から作業していますが、それがどのような目的を果たすのか正確にはわかりません。

メソッド内で、<f:facet name=actions>タグでラップされている点を除いて、動作する他のコードとまったく同じコードをいくつか作成しました。これをコードの周りに追加すると、それをラップしているドロップダウンボックスが展開時に消えます。この理由を提案したり、ファセットをどのようにいつ使用するかについての洞察を与えてくれる人はいますか?

ここに私のコードがあります。Beanコードは単純なゲッターとセッターであり、それらが問題を引き起こしているとは思わないので、気にしません。

<f:facet name="actions">
    <p:selectOneMenu id="SwitchWeekDrpDwnMenu" 
                     value="#{depotWorkloadBean.selectView}"
                     partialSubmit="true">
        <p:ajax update="mainForm" 
                listener="#{depotWorkloadBean.updateView}" />
        <f:selectItem itemLabel="Day view" itemValue="Day"/>
        <f:selectItem itemLabel="01/01/2014" itemValue="Week"/>
    </p:selectOneMenu>
</f:facet>

ファセットタグを削除すると、ドロップダウンボックスが表示されますが、Beanのように機能しません。

46
hello123

ファセットは、コンテナコンポーネント内の名前付きセクションを表します。たとえば、dataTableコンポーネントのヘッダーとフッターファセットを作成できます。 https://web.archive.org/web/20170828020413/http://www.jsftoolbox.com/documentation/help/12-TagReference/core/f_facet.html

ユーザーからのコードを使用するコンポーネント(ラッパーとしましょう)を作成する場合に便利です。

すなわち。長いテキストを非表示にし、その短いバージョンを表示するコンポーネントを作成する場合。要素本体のみを使用できますが、ユーザーから短いバージョンと長いバージョンを取得したい場合は、1つの値のみを取得し、1つの値で(判別式を使用せずに)行うことはできませんどちらが長いか、どちらが短いバージョンかを言います。

<textShortener>
    <f:facet name="short">
        This text is short.
    </f:facet>
    <f:facet name="long">
        This text is too <b>long</b to be showed when page loads. User have to click the button after the short text to show this.
    </f:facet>
</textShortener>

はい、これはjsfテンプレートを使用して実行できます(実行する必要があります)。

質問:野生のxmlでファセットを定義しただけで、誰もそれを要求しなかったため、誰も処理しませんでした。そのため、エラーをスローせず、何も表示しませんでした。

16
Flowy