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

Tap*_*ose 2 javascript css resources location jsf-2

是否有必要给文件夹命名为"资源"做一个css文件和js文件的引用时h:outputStylesheeth:outputScript

因为当我给出文件夹名称"assets"而不是"resources"时,这些文件不会被加载.

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

<h:head>
    <h:outputStylesheet name="css/styles.css"/>
    <h:outputScript name="js/site.js"/>
</h:head>
Run Code Online (Sandbox Code Playgroud)

这是我的项目结构:

在此输入图像描述

在屏幕截图中,您可以看到文件夹名称是资源.然后它正在运作.如何指定其他名称?

Bal*_*usC 7

文件夹名称根据JSF规范的 2.6.1.1和2.6.1.2章节进行修复.

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

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

resources/<resourceIdentifier>
Run Code Online (Sandbox Code Playgroud)

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

2.6.1.2将资源打包到Classpath中

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

META-INF/resources/<resourceIdentifier>
Run Code Online (Sandbox Code Playgroud)

必须使用通过调用当前方法获得的getResource*()方法来访问打包到类路径中的资源.ClassLoadergetContextClassLoader()Thread

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

但是,在即将到来的JSF 2.2中,根据JSF规范,问题996可以通过新的javax.faces.WEBAPP_RESOURCES_DIRECTORY上下文参数来更改路径,该参数将相对于webcontent root的路径作为参数值:

<context-param>
    <param-name>javax.faces.WEBAPP_RESOURCES_DIRECTORY</param-name>
    <param-value>WEB-INF/resources</param-value> 
</context-param>
Run Code Online (Sandbox Code Playgroud)

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

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

<context-param>
    <param-name>javax.faces.WEBAPP_RESOURCES_DIRECTORY</param-name>
    <param-value>assets</param-value> 
</context-param>
Run Code Online (Sandbox Code Playgroud)

请注意,这仅涵盖第2.6.1.1节中指定的webapp自己的资源,而不是第2.6.1.2节中指定的JAR资源.JAR资源的路径仍然应该META-INF/resources由Servlet API规范控制,而不是JSF规范.它就是通过ServletContext#getResource()JSF外部控制的方法获得的封面.