当前位置: 首页 > 面试题库 >

如何以编程方式向其中添加JS和CSS资源 ?

秦鸿羽
2023-03-14
问题内容

我需要以编程方式向<h:head>JSF页面添加JS和CSS资源。目前尚不清楚如何实现这一目标。有人可以提供提示或启动示例吗?


问题答案:

这取决于您到底想在哪里声明资源。 通常
,以编程方式声明它们的唯一原因是您拥有一个自定义UIComponentRenderer生成HTML代码,而这些代码又需要这些JS和/或CSS资源。然后由@ResourceDependency或声明它们@ResourceDependencies

@ResourceDependency(library="mylibrary", name="foo.css")
public class FooComponentWithCSS extends UIComponentBase {
    // ...
}



@ResourceDependencies({
    @ResourceDependency(library="mylibrary", name="bar.css"),
    @ResourceDependency(library="mylibrary", name="bar.js")
})
public class BarComponentWithCSSandJS extends UIComponentBase {
    // ...
}

但是,如果您 确实 需要在其他地方声明它们,例如 渲染响应 之前 调用的backing
bean方法(否则为时已​​晚),则可以使用UIViewRoot#addComponentResource()。必须将组件资源创建为UIOutput呈现器类型为javax.faces.resource.Scriptjavax.faces.resource.Stylesheet,以分别表示完全值<h:outputScript><h:outputStylesheet>。该libraryname属性正好可以放在属性地图。

UIOutput css = new UIOutput();
css.setRendererType("javax.faces.resource.Stylesheet");
css.getAttributes().put("library", "mylibrary");
css.getAttributes().put("name", "bar.css");

UIOutput js = new UIOutput();
js.setRendererType("javax.faces.resource.Script");
js.getAttributes().put("library", "mylibrary");
js.getAttributes().put("name", "bar.js");

FacesContext context = FacesContext.getCurrentInstance();
context.getViewRoot().addComponentResource(context, css, "head");
context.getViewRoot().addComponentResource(context, js, "head");


 类似资料:
  • 我对使用Swift的UIKit相对较新。目前,我正在尝试制作一个简单的UITableView,其中包含每个单元格的几个UILabels(纯粹以编程方式),尽管我在尝试这样做时遇到了很多麻烦。我的代码如下: 这是当前在模拟器中显示的内容。 这是我想看到的。 我如何着手改变我先前存在的代码以得到我所寻求的最终结果?我有一种感觉,这与我的代理或数据源有关,但无论我做什么,我似乎总是迷路。任何帮助都将不胜

  • 我正在使用SpringDoc,并试图以编程方式向OpenApi添加一个模式,但没有成功。 mySchema的描述没有添加到我在生成的YAML文件中看到的模式列表中,如果我试图引用它:

  • 我正在尝试在Android上添加Wifi网络,我想知道如何连接到不广播其SSID的Wifi网络(它是否有空SSID或带有\0s的清晰SSID)。 这是我目前用于广播其SSID的Wifi网络的内容:

  • 如何以编程方式在Spring Boot中将内容添加到endpoint?文档指出,通过使用接口,这对于endpoint是可能的。endpoint也有什么吗? 我想在那里添加操作系统名称和版本以及其他运行时信息。

  • 我想以编程方式在liferay中添加站点,因此我创建了一个负责以编程方式添加站点的portlet,但它不起作用,所以请任何人在这方面帮助我。当我单击create site is时,我得到的错误是。这是我的代码: &这是我的sites.java,它是一个操作文件: 我的日志文件是:

  • 我还在想办法弄清楚回收站。我有一个arraylist,用于初始化回收器视图。 如何在设置适配器和布局管理器后向回收器视图添加新项目? 所以基本上,在我和之后,我如何向RecyclerView添加一个新项目呢??