如何防止在h:head中加载PrimeFaces theme.css

时间:2012-09-08 13:28:46

标签: primefaces

我使用PrimeFaces作为主要的JSF组件库。但我只需要在一个网页上。其他网页不使用PrimeFaces库。我正在使用模板,这是重要的模板的一部分:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:fn="http://java.sun.com/jsp/jstl/functions">  
<h:head>
    <f:facet name="first">
        <title>
            <ui:insert name="titleOfPage">Insert title</ui:insert>
        </title>
    </f:facet>
    <h:outputStylesheet name="basic.css" library="css" />
    <h:outputStylesheet name="template.css" library="css" />
    <f:facet name="last">
        <ui:insert name="scriptOfPage" />
        <h:outputScript name="mainScript.js" library="javascript" />
        <ui:insert name="styleOfPage" />
    </f:facet>
</h:head>   
<h:body>

我发现在h:head定义的情况下,它会自动加载PrimeFaces theme.css。加载页面的源部分如下所示:

<link href="/javax.faces.resource/theme.css.xhtml?ln=primefaces-aristo" rel="stylesheet" type="text/css">

我没有在模板或页面中使用任何实现模板的primefaces。但是h:head stil加载了theme.cs。是否可以仅在需要时加载此主题?

2 个答案:

答案 0 :(得分:9)

您可以阻止在web.xml中加载主题:

<context-param>
    <param-name>primefaces.THEME</param-name>
    <param-value>none</param-value>
</context-param>

在网站上你想要主题只是添加css:

<link href="/javax.faces.resource/theme.css.xhtml?ln=primefaces-aristo" rel="stylesheet" type="text/css"/>

答案 1 :(得分:0)

也许重写headrenderer? 我只是删除编码它的部分,然后在一页上手动完成。

我可以想到其他许多方法,如果您需要更具体的帮助,请告诉我。

我认为您可以使用此http://code.google.com/p/primefaces-extensions/source/browse/primefaces-extensions/trunk/src/main/java/org/primefaces/extensions/component/head/HeadRenderer.java?r=1353