2014-04-04 2 views
1

JSF에서 리소스로드 순서를 올바르게 지정할 수 없습니다. 특히 정점도 사용할 때 특히 그렇습니다. 나는 내가 포함 할 필요가있는 다수의 스타일 시트를 가지고있다. 모든 것들은 프라임 머티리얼 리소스 뒤에로드되어야한다.JSF에서 리소스로드 순서 관리

나는이 있습니다

<h:outputStylesheet library="mw.static" name="css/prime.css"/> 
<h:outputStylesheet library="mw.static" name="css/main.css"/> 

다음과 같이 HTML의 결과는 다음과 같습니다

<link href="/static/css/prime.css?rv=1396621461" rel="stylesheet" type="text/css"></link> 
<link href="/static/css/main.css?rv=1396621461" rel="stylesheet" type="text/css"></link> 
<link href="/javax.faces.resource/primefaces.css.xhtml?ln=primefaces&rv=1396621461" rel="stylesheet" type="text/css"></link> 
<script src="/javax.faces.resource/jquery/jquery.js.xhtml?ln=primefaces&rv=1396621461" type="text/javascript"></script> 
<script src="/javax.faces.resource/primefaces.js.xhtml?ln=primefaces&rv=1396621461" type="text/javascript"></script> 
<script src="/javax.faces.resource/jquery/jquery-plugins.js.xhtml?ln=primefaces&rv=1396621461" type="text/javascript"></script> 
<link href="/javax.faces.resource/charts/charts.css.xhtml?ln=primefaces&rv=1396621461" rel="stylesheet" type="text/css"></link> 
<script src="/javax.faces.resource/charts/charts.js.xhtml?ln=primefaces&rv=1396621461" type="text/javascript"></script> 

알 수있는 바와 같이

, 내 자신의 스타일 시트의 순서가 존중되고, prime.css가 전에 포함되어 있습니다로 main.css. 그러나, 나는 primefaces CSS 파일 후 둘 다 필요합니다.

일반적으로 HeadRendered가 먼저 primefaces css 파일을 작성한 다음 css 파일을 작성한 다음 primefaces js를 작성한 다음 추가 스크립트를 작성하는 것이 가장 좋습니다. 이것은 Google의 페이지 속도 권장 사항을 준수하고 내 CSS 종속성 문제를 해결할 것입니다. prime.css와 main.css가이 primefaces 자원 뒤에 지금 참으로있는 동안, 그러나

<f:facet name="last"> 
<h:outputStylesheet library="mw.static" name="css/prime.css"/> 
<h:outputStylesheet library="mw.static" name="css/main.css"/> 
<!--[if lte IE 8]> 
<link rel="stylesheet" href="${path.styleSheet}-ie.css" type="text/css" /> 
<![endif]--> 
<ui:insert name="css"/> 
</f:facet> 

:

여기서 할 수있는 분명한 것은 몸으로이 배치, 패싯 마지막 방법을 사용하는 것이 었습니다 내 ui : insert 태그 (즉, 페이지 자체에 넣어야하는 일부 CSS를 삽입 함)는 즉 특정 스타일 시트와 함께 건너 뜁니다. 그래서 여기도 해결책이 없습니다.

여러분 중 누군가가 문제를 해결할 수 있는지 궁금합니다. HeadRenderer primefaces 구현을 살펴 봤지만이 작업을 수행하는 간단한 방법은 없습니다 (특히 CSS 파일의 순서를 변경하지 않아야 함).

답변

0

<h:head> 태그 내부에 한번 장소
<h:outputStylesheet library="mw.static" name="css/prime.css"/> <h:outputStylesheet library="mw.static" name="css/main.css"/> ,이 태그가없는 경우에 당신의 CSS를 작동하게하는 또 다른 방법이있다 <head>

와 이것을 대체 할,하지만 지루한 작업이 필요합니다.
각 속성 다음에 '! important'를 넣어야합니다.

+0

JSF에서'h : head'의 순서로'head'를 사용하는 것은 권장하지 않습니다 : http://stackoverflow.com/a/6044008/1199132 –

+0

글쎄, 나는 CSS 파일을 포함하는 다른 방법을 모른다. 'h : head'없이 html로 마지막으로 추가 된 파일이됩니다. – Will