1

我在 JSF2 中创建了一个复合组件。我工作得很好。

我想将它创建为 JAR 以供将来使用。

我按照这里的说明进行操作。

但是,当涉及到 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 项目?

已编辑

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
4

2 回答 2

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位于META-INF/resourcesJAR 文件目录中名为的目录中。

此外,如果您打算允许其他开发人员使用您的 JAR,请考虑使用不会与其他名称冲突的库名称。

于 2011-07-28T14:33:24.027 回答
1

AFAIK,资源需要位于与复合组件相同的目录中。您是否尝试将 css 放在同一个库中?

于 2011-07-28T12:40:29.357 回答