【发布时间】:2017-08-05 01:05:06
【问题描述】:
我在 Mojarra 2.2.13 上,我的项目使用 PrimeFaces 6.0。
我正在编写自己的 JSF UIComponent。它需要一些位于webapp/resources/js/charts.min.js 的JavaScript。当我使用 @ResourceDependency 注释我的组件时,脚本 is 呈现:
@ResourceDependency(name = "js/charts.min.js", target = "head")
但是,我并不总是需要渲染它。所以我试图从encodeBegin(FacesContext context) 方法中有条件地将组件资源添加到视图根:
if (condition) {
UIOutput js = new UIOutput();
js.setRendererType("javax.faces.resource.Script");
js.getAttributes().put("name", "js/charts.min.js");
context.getViewRoot().addComponentResource(context, js, "head");
writer.startElement("div", null);
writer.writeAttribute("class", "myChart", null);
// ... write chart data
writer.endElement("div");
}
这不渲染脚本(myChart 是渲染虽然)。我的日志中没有出现错误。有什么我可以检查或改进的想法吗?
我也没有使用 PrimeFaces 进行过测试(不确定它的头部渲染器是否导致了这种情况),但结果是一样的。
【问题讨论】:
-
您是否尝试过
jstl 标签而不是 java 代码设置? -
@TheBitman 没有。这对创建 UIComponent 有什么帮助?
-
我想也许你可以在 JSF 文件而不是组件中过滤 js LINK。但说实话我完全不明白你的问题:)
标签: jsf resources uicomponents