我在JSF2中创建了一个复合组件。我工作得很好。
我想将其创建为JAR以供将来使用。
我按照说明here。
然而,当涉及到CSS时,浏览器会引用相对于使用jar而不是Jar位置的项目的位置!
我这样定义:
<h:outputStylesheet library="css" name="component.css" target="head" />
我得到了这个例外:GET http://localhost:8080/MY_APPLICATION/resources/component.css 404 (Not Found)
相对于项目而言,它正在寻找它,而不是Jar项目!
如何相对于JAR项目制作它?
EDITED
JAR树是:
META-INF
--resource
-- components
myComp.xhtml
components.css
-- img
-- scripts
--components.taglib.xml
--faces.config.xml
战争是一个经常性的动态项目:
WEB-INF
--lib
myJar.jar
-- web.xml
-- faces-config.xml
testComp.xhtml
答案 0 :(得分:6)
您的JAR目录结构应为:
META-INF
--resources
-- components
myComp.xhtml
-- css <-- The library defined in the stylesheet
components.css <-- A stylesheet resource in the library
-- img
-- scripts
--components.taglib.xml
--faces.config.xml
由于您在css
标记中将库名称指定为h:outputStylesheet
且资源名称为component.css
,因此该文件应存在于名为css
的目录中位于JAR文件的META-INF/resources
目录中。
另外,如果您打算允许其他开发人员使用您的JAR,请考虑使用未与其他名称冲突的库名。
答案 1 :(得分:1)
AFAIK,资源需要与复合组件位于同一目录中。您是否尝试将CSS放在同一个库中?