[RESOLVIDO] - Dúvidas com diretórios de Pasta + JSF 2.0 + Facelets

Gostaria de sabe se alguém já passou pela seguinte situação:

Criamos um projeto em jsf 2.0 e na divisão do diretório de pastas do webcontent surgiram algumas situações.
Já haviamos trabalhado com uma estrutura semelhante utilizando jsf 1.2 e tiles-definition e conseguíamos essa divisao de pastas perfeitamente.

Exemplo:

WEBCONTENT
CONTENT
CLIENTES
cadastroCliente.jsp
FORNECEDORES
cadastroFornecedores.jsp

O maior problema agora envolve a utilização de facelets, porque devido a herança das páginas , nosso template busca um caminho relativo de acesso ao css e as imagens do projeto, porém quando fazemos uma herança referente a este template o aplicativo para de enxergar os diretórios anteriores, ou seja, as novas págnas só enxergam de seu diretório corrente para frente .

Exemplo:

WEBCONTENT
CONTENT
RESOURCES
CSS
JS
PAGINAS
TEMPLATE
Template.xhtml
CLIENTE
cadastroCliente.xtml

por exemplo, a página cadastroCliente.xhtml não enxerga nem ao menos o template, pois está um nível acima de hierarquia.
Dessa forma estamos tendo que usar todas as páginas em um mesmo diretório. Até funciona , mas o problema é a organização, gostaríamos de ter essa estrutura de páginas bem definida.
Alguém vê alguma solução para este problema ???

Nosso ambiente:
ECLIPSE Helios + Jsf 2.0 (MOJARRA) + JPA 2.0 e hibernate + Primefaces 2.2.1 +Facelets

Amigo no JSF2 o padrao é para seus arquivos css, imagens, js fiquem dentro de resource e para importar basta fazer isso

	<h:outputScript name="Arquivo.js" library="subpasta" />
       <h:outputStylesheet library="subpasta" name="Arquivo.css" />
        <h:graphicImage value="#{resource['subpasta/Arquivo.gif']}" />

Olá leonardobhbr, primeiramente agradeço a atenção.

Com Relação ao CSS e ao Javascript, conseguimos fazer o link entre a página Template e os arquivos CSS, e JS utilizando
<h:outputScript name=“Arquivo.js” library=“subpasta” />
<h:outputStylesheet library=“subpasta” name=“Arquivo.css” /> como Você sugeriu.

Porém quanto as imagens, ainda não tivemos sucesso.

Estamos utilizando da seguinte maneira: <h:graphicImage value=“resources/images/grid.png”></h:graphicImage>

O problema é que a página inicial reconhece a imagem perfeitamente, mas quando fazemos uma herança para uma tela filha a partir da template as imagens já não estão vindo carregadas, com o css e o javascript conseguimos, agora só precisamos resolvera questão das imagens.

Se não for incômodo você poderia nos mostrar um exemplo por favor ??

Obrigado.
att,

Para imagens utilize

h:graphicImage value="#{resource['images/grid.png']}" />

ao invés de

<h:graphicImage value="resources/images/grid.png">

Olá Amigo, boa tarde!

Conseguimos resolver a situação.

Resolução:

Mudamos a pasta resources para um diretório acima, ficando na raiz do WebContent.

E ai atualizamos os apontamentos para o novo local.

CSS

<h:outputStylesheet library="css" name="casablanca-theme.css"></h:outputStylesheet>

Imagem (Este icon está no Template.xhtml).

 icon="/resources/images/grid.png" 

Abaixo imagem do nosso diretório.

Obrigado pela ajuda leonardobhbr.

Abraço a todos.


exatamente o que eu precisava. esses arquivos do “resources” não podem ser acessados de forma alguma se estiverem dentro do web-inf?

Qualquer coisa sob WEB-INF está escondida para o browser.
Por exemplo, se você precisa disponibilizar um arquivo CSS ou HTML, ou um applet (.JAR), ele não pode estar sob WEB-INF (obviamente há algumas exceções, mas normalmente você não põe essas coisas sob WEB-INF).

1 curtida