HTML对象作为JSF UIComponent
我有一个选项卡视图,我使用它生成选项卡:HTML对象作为JSF UIComponent,jsf,primefaces,tabview,uicomponents,Jsf,Primefaces,Tabview,Uicomponents,我有一个选项卡视图,我使用它生成选项卡: <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: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>
但是,我在添加新选项卡时遇到了问题。我必须更新选项卡视图,这导致选项卡及其内容重新加载,这对我来说是个问题
然后,我切换到使用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;
}
我得到以下错误:
类型列表中的方法addUIComponent不适用于参数HTMLObjectElementImpl
我只能添加一个UIComponent
我不确定HTMLObjectElementImpl是否适合,但我没有找到更好的
HTML标记是否有UIComponent,或者是否有其他类可用于HTML
是否有其他人有这个问题并找到了解决方案?不是JSF组件。它基本上被认为是纯文本
最简单的方法是创建一个转义设置为false的
当心XSS攻击漏洞,以防将用户控制的变量传递给该漏洞
将来,您将尝试以编程方式创建JSF组件,使用的是的子类,而不是一些随机的JAXP实现特定类。或者,更好的办法是修复更新问题,这样您就可以继续使用XHTML代码来创建视图,而不是使用冗长的Java代码。但是,在更新时,您也会遇到同样的问题……您只是将简单的XHTML转换为复杂的Java。PF tabs不支持“在不重新加载所有其他选项卡的情况下在运行时动态添加选项卡”@Kukeltje使用tv.getChildren.addtab可以轻松地动态添加选项卡。这对我来说很好。是的,但是为了使它可见,你必须呈现整个选项卡视图,包括所有其他选项卡。这就是我在先前的评论中所说的。我知道这里说你不能添加标签。谢谢你的帮助!HtmlOutText运行良好
HtmlOutputText html = new HtmlOutputText();
html.setEscape(false);
html.setValue("<object>...</object>");