Расширенный @FacesComponent как составной интерфейс componentType ничего не рендерит - PullRequest
3 голосов
/ 12 августа 2011

Я пытаюсь расширить класс компонента 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>

ничего не показывает. Что мне здесь не хватает?

1 Ответ

5 голосов
/ 12 августа 2011

Поддерживающий компонент составного компонента должен реализовывать 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().

Смотри также:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...