我正在关注BalusC的优秀答案here,它完成了将JSF内容打包到jar中的步骤,以便可以在多个应用程序之间共享。这包括指定常见的css文件。我想把我的主要表面theme.css
放在罐子里,但是如果要包含主题,那么主要表面是非常规范的。即。它应该在(resources/primefaces-mytheme/theme.css)
之类的文件夹中,然后web.xml应该包含:
<context-param>
<param-name>primefaces.THEME</param-name>
<param-value>mytheme</param-value>
</context-param>
如果我将我的主题放入jar中(例如)......
CommonWebProject
|-- META-INF
| |-- resources
| | -- common
| | |-- css
| | | -- theme.css
...在使用jar的项目中,上下文参数应该是什么样子? (或者jar本身应该有一个web.xml文件?)
编辑:另一种解决方案是以某种方式阻止主要插入其默认主题。然后我可以在我的模板标题中以正常方式插入我自己的主题。
答案 0 :(得分:1)
因此,根据Xtreme Biker的评论,您可以关闭默认的primefaces主题:
<context-param>
<param-name>primefaces.THEME</param-name>
<param-value>none</param-value>
</context-param>
然后,您可以使用类似......
之类的内容手动添加自定义主题<h:outputStylesheet library="primefaces-mytheme" name="theme.css" />
我为我的应用程序中的所有页面使用标准facelets模板,因此这个css文件会添加到每一页的这一行。
如果css文件的顺序很重要(就像我这样),你也可以使用像...这样的东西。
<f:facet name="last">
<link type="text/css" rel="stylesheet"
href="#{request.contextPath}/javax.faces.resources/primefaces-mytheme/teccura.css.xhtml"/>
</f:facet>
...在标题内指示链接应插入“第一个”,“中间”或“最后”。 (我使用'last'来确保我的css覆盖primefaces.css。)
使用context-param(如果有人知道如何执行此操作,请让我知道)以某种方式指向css的主要表面可能更整洁,但是这种方法确实提供了更多控制。例如,我现在可以将我的文件夹和文件命名为我喜欢的东西 - 即。 common/css/mytheme.css
而不是primefaces-mytheme/theme.css