3

我正在尝试扩展 JSF 的组件类(让它成为其中之一h: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 回答