在JAR中的复合组件中使用CSS

时间:2011-07-28 08:57:39

标签: css jsf jsf-2 composite-component

我在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

2 个答案:

答案 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,资源需要与复合组件位于同一目录中。您是否尝试将CS​​S放在同一个库中?