HTML 对象作为 JSF UIComponent
HTML object as JSF UIComponent
我有一个 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;
}
我收到以下错误:
The method add(UIComponent) in the type List is not applicable for the arguments (HTMLObjectElementImpl)
我只能添加一个 UIComponent。
我不确定 HTMLObjectElementImpl 是否适合 <object>
,但我没有找到更好的东西。
是否有 HTML <object>
标签的 UIComponent 或者是否有另一个 class 可用于 HTML <object>
?
有没有其他人遇到这个问题并找到解决方案?
<object>
不是 JSF 组件。它基本上被认为是纯文本。
最简单的方法是创建一个 HtmlOutputText
并将 escape
设置为 false
。
HtmlOutputText html = new HtmlOutputText();
html.setEscape(false);
html.setValue("<object>...</object>");
小心 XSS 攻击漏洞,以防您将用户控制的变量传递给它。
将来您尝试以编程方式创建 JSF 组件,使用 UIComponent
的子 class 而不是一些特定的随机 JAXP 实现 class。或者,更好的是,解决该更新问题,以便您可以继续使用 XHTML 代码而不是冗长的 Java 代码来创建视图。
我有一个 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;
}
我收到以下错误:
The method add(UIComponent) in the type List is not applicable for the arguments (HTMLObjectElementImpl)
我只能添加一个 UIComponent。
我不确定 HTMLObjectElementImpl 是否适合 <object>
,但我没有找到更好的东西。
是否有 HTML <object>
标签的 UIComponent 或者是否有另一个 class 可用于 HTML <object>
?
有没有其他人遇到这个问题并找到解决方案?
<object>
不是 JSF 组件。它基本上被认为是纯文本。
最简单的方法是创建一个 HtmlOutputText
并将 escape
设置为 false
。
HtmlOutputText html = new HtmlOutputText();
html.setEscape(false);
html.setValue("<object>...</object>");
小心 XSS 攻击漏洞,以防您将用户控制的变量传递给它。
将来您尝试以编程方式创建 JSF 组件,使用 UIComponent
的子 class 而不是一些特定的随机 JAXP 实现 class。或者,更好的是,解决该更新问题,以便您可以继续使用 XHTML 代码而不是冗长的 Java 代码来创建视图。