【问题标题】:Using CSS in composite components in a JAR在 JAR 中的复合组件中使用 CSS
【发布时间】:2011-10-14 22:41:03
【问题描述】:

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

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

我按照here的说明进行操作。

但是,当涉及到 CSS 时,浏览器指的是相对于使用 jar 的项目的位置,而不是 Jar 的位置!

我是这样定义的:

<h:outputStylesheet library="css" name="component.css" target="head" />

我得到了这个例外:GET @987654322@_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

【问题讨论】:

  • 你能发布你的 JAR 文件的结构,以及包含它的 WAR 文件吗?我有一种感觉,要么 JAR 文件不包含 CSS 样式表,要么有其他问题。另外,考虑阅读几个小时前发布的this answer。我希望它可以帮助您了解资源在运行时是如何定位的。

标签: css jsf jsf-2 composite-component


【解决方案1】:

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

【讨论】:

  • 我把它放在同一个目录但没有帮助:(
【解决方案2】:

你的 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

由于您在h:outputStylesheet 标记中将库名称指定为css,资源名称为component.css,因此该文件应位于名为css 的目录中,该目录位于META-INF/resources 目录中JAR 文件。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-03
    • 2013-01-07
    • 2011-10-10
    • 1970-01-01
    • 2013-12-16
    • 2013-06-12
    • 2013-06-21
    相关资源
    最近更新 更多