我有一个部署在GlassFish 3.1.2.2服务器上的JSF / PrimeFaces项目。它使用我自己的主题,直到现在没有问题。但是今天我想将它部署在GlassFish 4.1服务器上,现在我收到了这个错误:
java.lang.IllegalArgumentException: Path resources/primefaces-mytheme does not start with '/'
还有更多:
at org.apache.catalina.core.StandardContext.getResourcePaths(StandardContext.java:7577)
at org.apache.catalina.core.ApplicationContext.getResourcePaths(ApplicationContext.java:443)
at org.apache.catalina.core.ApplicationContextFacade.getResourcePaths(ApplicationContextFacade.java:239)
at com.sun.faces.context.ExternalContextImpl.getResourcePaths(ExternalContextImpl.java:532)
at com.sun.faces.application.resource.WebappResourceHelper.findLibrary(WebappResourceHelper.java:189)
at com.sun.faces.application.resource.ResourceManager.findLibrary(ResourceManager.java:465)
at com.sun.faces.application.resource.ResourceManager.getResourceInfo(ResourceManager.java:292)
at com.sun.faces.application.resource.ResourceManager.doLookup(ResourceManager.java:286)
(...)
但这对我来说只是胡言乱语,我无处可见任何我创建的课程或文件,所以我无法将其放在错误来源的地方。我所知道的是,它必须与我的主题相关,即{解压 - >我不会使用jar
)在/resources/primefaces-mytheme
文件夹下:
webapp
+-WEB-INF
+-resources
+-default
+-images
+-primefaces-mytheme
+-images
+-theme.css
在theme.css
内,资源文件夹中对图像的引用如下:
url("#{resource['primefaces-mytheme:images/ui-bg_flat_0_ffffff_40x100.png']}")
css
文件实际上是我写出主题primefaces-mytheme
名称的唯一地方。我在哪里必须查找错误的原因?
答案 0 :(得分:1)
找到它。我认为它有关于如何使用资源文件夹以及我如何引用它的一些事情,但它实际上就在我眼前:在部署描述符web.xml
中声明资源目录:
GlassFish 3.1.2.2 接受了这个:
<context-param>
<param-name>javax.faces.WEBAPP_RESOURCES_DIRECTORY</param-name>
<param-value>resources</param-value>
</context-param>
GlassFish 4 需要这样:{{em> /
resources
之前)
<context-param>
<param-name>javax.faces.WEBAPP_RESOURCES_DIRECTORY</param-name>
<param-value>/resources</param-value>
</context-param>
我不知道为什么之前的GlassFish
版本在没有前导param-value
的情况下接受了/
。也许我从一开始就把它弄错了,而且GlassFish 3也不理会我的错字或者他们只是改变了目录需要声明的方式。