3

JSF のコンポーネント クラスを拡張して (の 1h:panelGroupつにします)、複合コンポーネントを介してレンダリングしようとしています。

ステップ1:

@FacesComponent(value="customPanel")
public class CustomPanel extends HtmlPanelGroup { // or UIPanel
}

ステップ2:

<!-- INTERFACE -->
<composite:interface componentType="customPanel"/>

<!-- IMPLEMENTATION -->
<composite:implementation>
  <h:outputText value="Some text:"/>
  <composite:insertChildren/>
</composite:implementation>

そしてステップ3:

<xyz:panel>Hello world!</xyz:panel>

何も示しません。ここで何が欠けていますか?

4

1 に答える 1

5

複合コンポーネントのバッキング コンポーネントは実装NamingContainerする必要があり、getFamily()は を返す必要がありjavax.faces.NamingContainerます。タグのドキュメントcomponentTypeの属性の説明も参照してください。<composite:interface>

@FacesComponent(value="customPanel")
public class CustomPanel extends HtmlPanelGroup implements NamingContainer {

    @Override
    public String getFamily() {
        return UINamingContainer.COMPONENT_FAMILY;
    }

}

UINamingContainerを省略できるように、代わりに拡張を選択することもできますgetFamily()

以下も参照してください。

于 2011-08-12T13:25:15.187 に答える