Problemas com <ui:include src="" /> do FACELETS

4 respostas
I

Bom pessoal meu problema é o seguinte, tenho um arquivo template.xhtml, um arquivo topo.xhtml e duas páginas que usam este template. O funcionamento é assim: o template.xhtml faz um include chamando o topo.xhtml que por sua vez busca uma imagem e as outras duas páginas usam o template.xhtml. Problema: quando eu deixo os arquivos na pasta WebRoot tudo funciona normalmente, esta é a estrutura:

app_raiz
->WebRoot
—> template.xhtml
—> topo.xhtml
—> guess.xhtml
—> response.xhtml
—> topo.png

Se eu deixar desta forma todas as minhas páginas, arquivos de imagem, etc deveriam ficar nesta pasta.
Portanto fiz assim para propósito de organização:

app_raiz
-> WebRoot
—> resources
------> images
---------> topo.png
------> pages
---------> guess.xhtml
---------> response.xhtml
------> template
---------> template.xhtml
---------> topo.xhtml

Desta forma imagens dentro da pasta images, páginas dentro de pages e templates dentro de template.
Porém assim nada funciona, nem mesmo as duas páginas encontram os métodos do bean. Não encontram o template, nem as imagens nem nada, e o endereço que chamo os arquivos creio que está certo, faço assim:

<!--template.xhtml -->
...
   <body>
      <table>
         <tr>
            <td>
               <ui:include src="topo.xhtml"/>
...
<!-- topo.xhtml -->
...
   <ui:composition ...>
      <ui:define name="topo">
         <img src="./images/topo.png"/>
...
<!-- paginas -->
...
   <body>
      <ui:composition template="../template/template.xhtml" />
...

Bom ta ai a forma que eu faço. Se por acaso o caminho que eu estou passando estiver errado, faz sentindo. Porém quando eu coloco as pages nesta organização de pasta nem o bean elas conseguem enxergar. Alguém tem noção do que eu estou fazendo errado? Ou já passou por isso?
Abraços.

4 Respostas

I

Galera, percebi uma coisa, cada arquivo que busque uma imagem, quando aberto separadamente funciona normal carregando as imagens, o problema é quando eu uso include. :frowning: Alguém já passou por isso ou tem uma idéia?

Y

Boa tarde iAlien;

Primeiro tire os diretórios images, pages e template de dentro do diretório resource.

Modifique as chamadas para

Template.xhtml
<ui:include src="./topo.xhtml"/> 

Topo.xhtml
<img src="../images/topo.png"/>

Paginas
<ui:composition template="../template/template.xhtml" />

Creio que assim ira funcionar, qualquer coisa poste aí

I

Ygor, tudo bom?

Fiz o que falou e mesmo assim não funcionou…:frowning:

Mas o que mais me intriga neste caso é o seguinte, em uma página q usa este template, tenho um parâmetro que vem do bean, porém quando abro esta página este parâmetro fica assim: #{NumberBean.max} ao invés de exibir o valor do parâmetro. Vou tentar criar um novo projeto e fazer estes teste de novo pra v se fiz algo errado neste projeto. Abraços

M

Use html base na sua aplicação e inclua sempre partindo da raiz

Criado 16 de agosto de 2010
Ultima resposta 20 de mar. de 2011
Respostas 4
Participantes 3