首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以更改h:outputStylesheet和h:outputScript使用的/resources文件夹名

是否可以更改h:outputStylesheet和h:outputScript使用的/resources文件夹名
EN

Stack Overflow用户
提问于 2012-12-03 01:20:20
回答 3查看 4.8K关注 0票数 2

h:outputStylesheeth:outputScript中引用css文件和js文件时,是否需要给出文件夹名?

因为当我给文件夹命名为"assets“而不是"resources”时,这些文件不会被加载。

这就是我使用这些标签的方式:

代码语言:javascript
复制
<h:head>
    <h:outputStylesheet name="css/styles.css"/>
    <h:outputScript name="js/site.js"/>
</h:head>

下面是我的项目结构:

在屏幕截图中,您可以看到文件夹名为resources。然后它就起作用了。如何指定不同的名称?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-12-05 03:15:32

文件夹名称按照JSF specification的第2.6.1.1和2.6.1.2章固定。

2.6.1.1将资源打包到网络应用程序根目录中

默认实现必须支持将资源打包到路径下的web应用程序根目录中

资源/

相对于web应用程序根目录。打包到web应用程序根目录中的资源必须使用ExternalContext上的getResource*()方法进行访问。

2.6.1.2将资源打包到类路径中

对于默认实现,类路径中打包的资源必须位于JAR条目名称下:

META-INF/resources/

必须使用ClassLoadergetResource*()方法访问打包到类路径中的资源,该方法通过调用当前ThreadgetContextClassLoader()方法获得。

在这两种情况下,它都提到了“必须”。它没有提到任何关于更改这些路径的可能配置选项。这适用于JSF 2.0和JSF 2.1。

然而,在即将到来的JSF2.2中,根据JSF spec issue 996,可以通过新的javax.faces.WEBAPP_RESOURCES_DIRECTORY上下文参数更改路径,该参数采用相对于new内容根的路径作为参数值:

代码语言:javascript
复制
<context-param>
    <param-name>javax.faces.WEBAPP_RESOURCES_DIRECTORY</param-name>
    <param-value>WEB-INF/resources</param-value> 
</context-param>

此示例将把/resources文件夹移动到/WEB-INF中,从而确保更高的安全性(即,现在不能再独立于FacesServlet访问这些资源)。

因此,在您的特定情况下,当升级到JSF 2.2时,您希望使用以下设置:

代码语言:javascript
复制
<context-param>
    <param-name>javax.faces.WEBAPP_RESOURCES_DIRECTORY</param-name>
    <param-value>assets</param-value> 
</context-param>

请注意,这只涵盖了2.6.1.1章中指定的webapp自己的资源,而不是2.6.1.2章中指定的JAR资源。JAR资源的路径应该仍然是META-INF/resources,因为这是由Servlet API规范控制的,而不是JSF规范。也就是说,它是通过ServletContext#getResource()方法获得的,该方法不受JSF的控制。

票数 7
EN

Stack Overflow用户

发布于 2012-12-03 05:33:49

您不能指定除resources之外的其他目录,除非您正在使用

代码语言:javascript
复制
<style></style>

OmniFaces CombinedResourceHandler

票数 1
EN

Stack Overflow用户

发布于 2012-12-03 23:38:50

这是资源处理程序在JSF 2.0中实现的方式,默认情况下,它将查看以下两个路径:

1) web应用根目录下的/resources。

2) /META-INF/resources打包到类路径上的外部JAR中。

如果您想使用不同的名称,就像Alexandre提到的那样,使用<script><style>标签,或者编写您自己的资源处理程序。

更多信息:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13671704

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档