Facelets - Uso de Template não está funfando

11 respostas
adriano_si

Prezados, estou fazendo uns testes com Facelets e estou tendo alguns problemas com essa funcionalidade. Usei o exemplo do livro do Edson Gonçalves de NetBeans, e dei uma olhada nesse Exemplo: http://blog.globalcode.com.br/2009/08/facelets-uma-forma-mais-agil-para.html

Minha aplicação está assim:

principal.xhtml
<?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">
    
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <link href="./../css/default.css" rel="stylesheet" type="text/css" />
        <link href="./../css/cssLayout.css" rel="stylesheet" type="text/css" />
        <title>.:: Krugger - Gerenciador de Projetos XP ::.</title>
    </head>
    
    <body>
        <div id="geral">

            <div id="topo">
            </div>
            
            <div id="menu">
                <p>Menu Aqui</p>
            </div>

            <div id="conteudo" class="conteudo_centro">
                <ui:insert name="conteudo">Content</ui:insert>
            </div>

            <div id="rodape">
                
            </div>
        </div>
    </body>
    
</html>
Esse é meu template... e eis o arquivo que o usa... index.xhtml
<?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">
    
    <body>
        
        <ui:composition template="./templates/principal.xhtml">
            
            <ui:define name="conteudo">
                conteudo
            </ui:define>

        </ui:composition>
        
    </body>
</html>
Bom... pouco antes de postar aqui, estava com meu WEB.XML apontando direto para index.xhtml como página inicial e estava recebendo como resultado na tela, somente a Palavra conteudo, sem Titulo de página, sem o Parágrafo inserido na DIV MENU do template...

Aí pra descargo de consciência, resolvi fazer que nem o Edson faz no livro e criei um index.jsp que faz um foward para o index.xhtml e... Voilá... tudo funcionou perfeitamente...

O que ocorreu para que ele funcionasse dessa forma e não da forma que estava anteriormente (com meu web.xml apontando direto ao index.xhtml) ????

Alguém já passou por isso ???

Falows ;)

11 Respostas

weiseleiter

onde vc está colocando o arquivo do template? E esse ponto no inicio do caminho? Nas
minhas telas, eu coloco sempre o endereço absoluto, ex: /template/template.xhtml.

adriano_si

Fala cara… os templates estão na pasta templates… e o . no início do caminho, foi gerado pelo próprio NetBeans…

Vou tentar tirar e ver se funciona, pois agora a bronca é que ele não está achando as folhas de Estilo, deve ser o formato do caminha mesmo… Mas que foi gerado pela própria IDE, por isso não me atrevi a mexer…

Falows :wink:

adriano_si

tirei o ponto e ficou tudo na mesma… agora o bicho não aplica o estilo nem F…

Se alguém puder ajudar… grato…

Falows :wink:

ctdaa

Cara… faz um esquema da estrutura de diretórios que voce está usando pra gente ter uma ideia:
tipo assim:

  • web
    |–content
    | |—
    |
    |–templates
    | |—principal.xhtml
    |–css
    |–images
    |
    |–index.xhtml
    etc

ctdaa

Mas… mesmo ser ver a estrutura… voce pode colocar os caminhos a partir da raiz do projeto… ou seja:

para o contexto (nome da aplicação) “meuTeste” no css coloque assim: /meuTeste/css/cssLayout.css
isso se sua pasta css estiver em web/css…
obs: se vc trocar o contexto vai ter que alterar o código…
OK?

adriano_si

ctdaa… cara… valew… é isso mesmo… tinha acabado de descobrir antes de ver sua resposta.

Agora minha dúvida é a seguinte, tem como algum modo de pegar o contexto automático, sem que eu tenha que descrevê-lo toda vez ???

Minha estrutura está assim

  • web
    |
    • css
      • cssLayout.css
      • default.css
        |
    • templates
      • principal.xhtml
        |
    • index.xhtml

adriano_si

consegui resolver assim…

Só que agora queria tirar esse nome por extenso e colocar em uma variável ou em algum config da vida e usar somente esse nome menor que ainda será definido, pois creio que a aplicação ainda possuirá vários outros templates…

Abraços :wink:

Kleber-rr

adriano_si:
consegui resolver assim…

Só que agora queria tirar esse nome por extenso e colocar em uma variável ou em algum config da vida e usar somente esse nome menor que ainda será definido, pois creio que a aplicação ainda possuirá vários outros templates…

Abraços ;)

Adriano, td bem?? Sei que o post é antigo, mas vc conseguiu resolver seu problema?? Estou tentando edsenrrolar uma aplicação web no eclipse, onde as paginas são em jsp. Mas estou tentando mudar para xhtml para poder usar os templates e o rich:dropdownmenu, mas não tem dado certo… tem como vc postar as configurações necessárias para usar os esses templates e se possível, um modelo?? Agradeço!

ctdaa

Kleber-rr:

Adriano, td bem?? Sei que o post é antigo, mas vc conseguiu resolver seu problema?? Estou tentando edsenrrolar uma aplicação web no eclipse, onde as paginas são em jsp. Mas estou tentando mudar para xhtml para poder usar os templates e o rich:dropdownmenu, mas não tem dado certo… tem como vc postar as configurações necessárias para usar os esses templates e se possível, um modelo?? Agradeço!

Olá Kleber, qual o problema? se você está recebendo erros quando troca o jsp para xhtml… veja algumas dicas de conversão:
http://wiki.apache.org/myfaces/MigrateFromJspToFacelets

Kleber-rr
ctdaa:
Kleber-rr:
Adriano, td bem?? Sei que o post é antigo, mas vc conseguiu resolver seu problema?? Estou tentando edsenrrolar uma aplicação web no eclipse, onde as paginas são em jsp. Mas estou tentando mudar para xhtml para poder usar os templates e o rich:dropdownmenu, mas não tem dado certo... tem como vc postar as configurações necessárias para usar os esses templates e se possível, um modelo?? Agradeço!

Olá Kleber, qual o problema? se você está recebendo erros quando troca o jsp para xhtml... veja algumas dicas de conversão:
[url]http://wiki.apache.org/myfaces/MigrateFromJspToFacelets[/url]

Eae ctdaa, blz??

Cara, pelo que andei lendo, parece q o jsp naum dá suporte legal para o facelets, entao tive de migrar tudo para xhtml. Como tenho várias jsp's no meu projeto, era mais preguiça mesmo... enfim, naum conseguia importar a linha do falecets no jsp para que funcionasse certinho, tipo assim:
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<%@ taglib uri="http://richfaces.org/a4j" prefix="a4j" %>
<%@ taglib uri="http://richfaces.org/rich" prefix="rich" %>
<%@ taglib uri="http://java.sun.com/jsf/facelets" prefix="ui" %>//essa linha fica grifada e o erro é esse: Can not find the tag library descriptor for "http://java.sun.com/jsf/facelets" 
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
Aí tive de salvar tudo como xhtml, com o cabeçalho assim:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!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:a4j="http://richfaces.org/a4j"
    xmlns:rich="http://richfaces.org/rich">
 <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />

e funcionou blz!!

É, vivendo e aprendendo!!
Valeu pessoal!

gRoOve

weiseleiter:
onde vc está colocando o arquivo do template? E esse ponto no inicio do caminho? Nas
minhas telas, eu coloco sempre o endereço absoluto, ex: /template/template.xhtml.

O ponto por acaso não significaria a raiz? Pois quando tento passar o endereço desta forma o cliente do template não o encontra.
Não deveria ficar algo assim:

NomeDaAplicação/template/template.xhtml.
OU
./template/template.xhtml.
Criado 29 de setembro de 2009
Ultima resposta 13 de mar. de 2012
Respostas 11
Participantes 5