2012-08-14 4 views
0

파일 시스템에서 정적 리소스 (예 : css 파일)를로드하기 위해 javax.faces.application.ResourceHandlerWrapperjavax.faces.application.ResourceWrapper을 오버로드했습니다. 이 리소스 로딩 메커니즘은 파일 시스템에서 새로로드 된 CSS 파일에서 참조되는 리소스에서도 발생합니다. 도움 주셔서 감사합니다.정적 리소스에 대한 JSF로드 리소스

답변

1

CSS 파일의 EL 표현식 #{resource}을 사용하면 /context/resources/someLibrary/somePath/someFile.ext 또는 무언가와 같은 하드 코드 된 경로 대신 동적으로 참조 할 수 있습니다.

예. 는 JSF의 기본 리소스 처리기가 차례로뿐만 아니라 자원 핸들러를 통과 할 권리 /javax.faces.resource URL을 그들을 대체 할

WebContent 
|-- resources 
| |-- someLibrary 
| | |-- somePath 
| | | `-- foo.ext 
| | `-- bar.ext 
| |-- somePath 
| | `-- baz.ext 
| `-- moo.ext 
: 

이 방법을 참조 할 것

.foo { 
    background-image: url(#{resource['someLibrary:somePath/foo.ext']}) 
} 

.bar { 
    background-image: url(#{resource['someLibrary:bar.ext']}) 
} 

.baz { 
    background-image: url(#{resource['somePath/baz.ext']}) 
} 

.moo { 
    background-image: url(#{resource['moo.ext']}) 
} 

.

+0

감사합니다. 우리는 이미 EL 표현식'# {resource}'을 사용했습니다. 나는'url'의 철자를 비교했다. 우리는'url ("# {resource [ 'someLibrary : somePath/foo.ext']}")'입니다. 나는 큰 따옴표를 넣었지만 도움이되지 못했습니다. – Julia

+0

그런 식으로 잘 작동해야합니다. 분명히 커스텀 리소스 핸들러는 그 일을 전적으로 제대로하지 못하고있다. 어떻게 실패했는지 조사하기 위해 디버거를 실행 한 다음 그것에 대해 이야기 할 수 있습니다. – BalusC

관련 문제