1. ホーム
  2. jsf

[解決済み] <f:facet>は何をするもので、どのような場合に使用するのですか?

2022-02-08 23:42:51

質問事項

というタグで困っています。 <f:facet> . 私はこれを使用する他のコード例を形成していますが、これがどのような目的を果たすのか正確に理解していません。

私はあるコードを書きました。そのコードは、私が見た中で動作する他のコードと全く同じですが、そのコードは <f:facet name=actions> タグを使用します。このタグを自分のコードの周りに追加すると、デプロイしたときに、それを包んでいるドロップダウンボックスが消えてしまいます。どなたか、この理由や、facetの使い方、タイミングについて教えていただけませんか?

ビーンコードは基本的なゲッターとセッターであり、問題を引き起こしているとは思わないので、わざわざ追加する必要はないでしょう。

<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>

facetタグを削除すると、ドロップダウンボックスが表示されますが、ビーンズと同じように機能しません。

解決するには?

<ブロッククオート

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

ユーザーからのコードを利用するコンポーネント(仮にwrapperとする)を作成したい場合に有効です。

例えば、長いテキストを隠し、その短いバージョンを表示するコンポーネントを作成したい場合。もしユーザーから短いバージョンと長いバージョンを取得したいのであれば、(何らかの判別方法を使わないと)一つの値ではできません。

<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で定義しただけで、誰もそれを要求しなかったので、誰もそれを処理しなかったのです。