У меня есть TabView, чьи вкладки я генерироваться с:объект HTML, как JSF UIComponent
<p:tabView>
<c:forEach var="app" items="#{data.apps}">
<p:tab title="#{app.name}" closable="true" id="app_#{app.id}">
<object data="#{app.startUri}" height="800" width="1150" />
</p:tab>
</c:forEach>
</p:tabView>
Однако, у меня была проблема с добавлением новых вкладок. Мне пришлось обновить TabView, который заставил закладки и их содержимое перезагружаться, что было проблемой для моей ситуации.
Затем я переключился на создание своего TabView с помощью компонента TabViewHelper.
Но тогда была проблема с добавлением тега объекта, как ребенок на вкладку:
public TabView initializeTabView(List<App> apps) {
tv = new TabView();
Tab tab;
for (App app : apps) {
tab = new Tab();
tab.setTitle(app.getName());
HTMLObjectElementImpl content = new HTMLObjectElementImpl(owner, "test-object");
tab.getChildren().add(content);
tv.getChildren().add(tab);
}
return tv;
}
Я получаю следующее сообщение об ошибке:
The method add(UIComponent) in the type List is not applicable for the arguments (HTMLObjectElementImpl)
Я могу только добавить UIComponent.
Я не уверен, что HTMLObjectElementImpl подходит для <object>
, но я не нашел лучшего.
Есть ли UIComponent для HTML <object>
-tag или есть еще один класс для HTML <object>
?
У кого-нибудь еще была эта проблема и нашли решение?
У вас будет такая же проблема при обновлении, хотя ... вы просто превратили простой xhtml в сложную Java. Вкладки PF просто не поддерживают «add-a-tab-dynamic-at-runtime without-reloading-all-others» – Kukeltje
@ Kukeltje Добавление динамической вкладки легко возможно с помощью 'tv.getChildren(). Add (tab)' , Это хорошо для меня. – Patrick
Да, но чтобы сделать его видимым, вы должны отобразить весь вкладку, включая все другие вкладки. Это то, что я сказал в своем предыдущем комментарии. Я знаю, что вы не можете добавить вкладку. – Kukeltje