【发布时间】:2015-10-03 00:48:30
【问题描述】:
我有一个 TabView,它的选项卡是通过以下方式生成的:
<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,这对我来说是个问题。
然后我切换到使用 TabViewHelper bean 创建我的 TabView。
但是随后将对象标签作为子标签添加到选项卡时出现问题:
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;
}
我收到以下错误:
类型List中的add(UIComponent)方法不适用于参数(HTMLObjectElementImpl)
我只能添加一个 UIComponent。
我不确定 HTMLObjectElementImpl 是否适合 <object>,但我没有找到更好的东西。
是否有用于 HTML <object>-tag 的 UIComponent,或者是否有其他可用于 HTML <object> 的类?
有没有其他人遇到过这个问题并找到了解决方案?
【问题讨论】:
-
你在更新时会遇到同样的问题……你只是将简单的 xhtml 转换为复杂的 java。 PF 标签只是不支持“在运行时动态添加标签而不重新加载所有其他”
-
@Kukeltje 使用
tv.getChildren().add(tab)可以轻松地动态添加选项卡。这对我很有效。 -
是的,但要使其可见,您必须渲染整个选项卡视图,包括所有其他选项卡。这就是我在之前的评论中所说的。我知道这里说过你不能添加标签。
标签: jsf primefaces tabview uicomponents