Facelets: pÁgina nÃo carrega no template

Pessoal, mais uma etapa da minha briga com o sistema:

Estou aqui tentando aprender Facelets, ja fucei a documentacao, peguei algumas “receitas de bolo” na internet, porem o problema persiste:

Eu crio um template,xhtml, marco as posições e entao vou criar os devidos *.xhtml para as posicoes que marquei: EIS QUE NAO ACONTECE NADA !!!

Quando eu executo no meu navegador, apenas o que esta no template.xhtml e mostrado na tela, perfeitamente por sinal, so que ele não tras para a tela o arquivo que eu quero que aparece no conteudo, nem ferrando !

Alguem ja passou por algum problema semelhante para me dar uma luz ?

Mais uma vez muito obrigado !

Meus XHTML:

template.xhtml

[code]<?xml version='1.0' encoding='ISO-8859-1' ?>

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
    <link href="./css/default.css" rel="stylesheet" type="text/css" />
    <link href="./css/cssLayout.css" rel="stylesheet" type="text/css" />
    <title>WebTarefas 2.0</title>
</head>

<body>

    <div id="top">
        <ui:insert name="top">Topo</ui:insert>
    </div>
    <div>
        <div id="content" class="right_content">
            <ui:insert name="Conteudo">
               
            </ui:insert>
        </div>
    </div>
    <div id="bottom">
        <ui:insert name="bottom">Rodape</ui:insert>
    </div>

</body>
[/code]

meu arquivo setor.xhtml (conteudo que eu quero carregar na marcação Conteudo)

[code]<?xml version='1.0' encoding='ISO-8859-1' ?>

<ui:composition 
  xmlns="http://www.w3.org/1999/xhtml"
  xmlns:ui="http://java.sun.com/jsf/facelets"
  xmlns:f="http://java.sun.com/jsf/core"
  xmlns:h="http://java.sun.com/jsf/html"
  xmlns:rich="http://richfaces.ajax4jsf.org/rich"
  template="./template.xhtml">
    <ui:define name="Conteudo">

        <body>

            <f:view>

                <h1><h:outputText value="Cadastro de Setores" /></h1>
                <h:form>

                    <h:dataTable value="#{setorManaged.setores}" var="st">
                        <h:column>
                            <f:facet name="header">
                                <h:outputText  value="Setor"/>
                            </f:facet>
                            <h:outputText value="#{st.setor}"/>
                        </h:column>
                        <h:column>
                            <f:facet name="header">
                                <h:outputText  value="Descrição"/>
                            </f:facet>
                            <h:outputText value="#{st.descricao}"/>
                        </h:column>
                        <h:column>
                            <f:facet name="header">
                                <h:outputText  value="Alterar"/>
                            </f:facet>
                            <h:commandLink value="Alterar" action="#{setorManaged.alterar}">
                                <f:setPropertyActionListener value="#{st.idSetor}"
                                                             target="#{setorManaged.setor.idSetor}" />
                            </h:commandLink>
                        </h:column>
                        <h:column>
                            <f:facet name="header">
                                <h:outputText  value="Excluir"/>
                            </f:facet>
                            <h:inputHidden value="#{setorManaged.setor.idSetor}" />
                            <h:commandLink value="Excluir" action="#{setorManaged.excluir}" >
                                <f:setPropertyActionListener value="#{st.idSetor}"
                                                             target="#{setorManaged.setor.idSetor}" />
                            </h:commandLink>
                        </h:column>
                    </h:dataTable>

                    <h:inputText value="#{setorManaged.setor.setor}"  />
                    <h:inputText maxlength="100" value="#{setorManaged.setor.descricao}" size="100" />
                    <h:commandButton value="Cadastrar" action="#{setorManaged.inserir}" />
                </h:form>

            </f:view>

        </body>
    </ui:define>
</ui:composition>[/code]

Uma duvida que surgiu agora, o arquivo WEB.XML, está assim:

[code]<?xml version="1.0" encoding="UTF-8"?>

<context-param>
   <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
   <param-value>.xhtml</param-value>
</context-param>

<context-param>
    <param-name>com.sun.faces.verifyObjects</param-name>
    <param-value>false</param-value>
</context-param>
<context-param>
    <param-name>com.sun.faces.validateXml</param-name>
    <param-value>true</param-value>
</context-param>
<context-param>
    <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
    <param-value>client</param-value>
</context-param>
<servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>/faces/*</url-pattern>
</servlet-mapping>
<session-config>
    <session-timeout>
        30
    </session-timeout>
</session-config>
<welcome-file-list>
    <welcome-file>faces/setor.xhtml</welcome-file>
 </welcome-file-list>

<!-- RICHFACES CONFIG -->
<filter>
    <display-name>Ajax4jsf Filter</display-name>
    <filter-name>ajax4jsf</filter-name>
    <filter-class>org.ajax4jsf.Filter</filter-class>
</filter>
<filter-mapping>
    <filter-name>ajax4jsf</filter-name>
    <servlet-name>Faces Servlet</servlet-name>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
    <dispatcher>INCLUDE</dispatcher>
</filter-mapping>

<context-param>
   <param-name>org.richfaces.SKIN</param-name>
   <param-value>blueSky</param-value>
</context-param>

<listener>
   <listener-class>
      com.sun.faces.config.ConfigureListener
   </listener-class>
</listener>

    </web-app>[/code]

Essa marcação deve apontar para o template principal ? No meu caso template.xhtml

faces/template.xhtml

Alguem ???

Bom dia diegocharles!

Dá uma olhada se esse é o caminho certo para o seu template. E o no seu setor.xhtml, você não precisa ter novamente a tag pois ela já existe no template.
Outra coisa, acho que não precisa declarar no web.xml o template…

<welcome-file-list>
<welcome-file>index.xhtml</welcome-file>
</welcome-file-list>

A tag welcome-file-list server para vc declarar quais são as páginas de acesso ao seu sistema.

Qualquer coisa é só avisar…
Abraço!

[quote=haamilton]Bom dia diegocharles!

Dá uma olhada se esse é o caminho certo para o seu template. E o no seu setor.xhtml, você não precisa ter novamente a tag pois ela já existe no template.
Outra coisa, acho que não precisa declarar no web.xml o template…

<welcome-file-list>
<welcome-file>index.xhtml</welcome-file>
</welcome-file-list>

A tag welcome-file-list server para vc declarar quais são as páginas de acesso ao seu sistema.

Qualquer coisa é só avisar…
Abraço![/quote]

O caminho no setor.xhtml está ok !

template=“template.xhtml”>

Quanto a declaração no meu web.xml, ai realmente eu to com duvida. Eu ja tentei tirar a declaração , porem dai quando eu executo o projeto, ele apenas lista o diretorio do meu projeto no browser.

Quando eu mudo o apontando para o meu setor.xhtml, ele mostra na tela o template certinho, porem ai acho que está errado né, pois ele deveria renderizar primeiro o template e ir chamando os “filhos”, que no caso o filho seria o template.xhtml. Não sei se meu pensamento esta certo.

E ae…

  <welcome-file-list>
     <welcome-file>index.html</welcome-file>
     <welcome-file>index.xhtml</welcome-file>
     <welcome-file>index.htm</welcome-file>
  </welcome-file-list>

No welcome-file define qual é a primeira página que será acessada qndo a aplicação for chamada pela primeira vez pelo usuário.
Não sei se você percebeu, mas no seu template.xhtml você definiu isso:


...

<ui:insert name="top">Topo</ui:insert>

...

<ui:insert name="Conteudo">  
</ui:insert>

<ui:insert name="bottom">Rodape</ui:insert>

Essas declarações <ui:insert servem para você definir onde os conteúdo criados na sua setor.xhtml irão aparecer.
Se você olhar na sua setor.xhtml, você só definiu o conteúdo e por isso o topo e o rodapé não terão nada.

Valeu!

hehehe Acho que nao to explicando direito a minha lógica:

no web.xml, eu chamo o template.xhtml, pq ele é o meu composer, e la eu marquei as posições TOPO, CONTEUDO, RODAPE.

O meu setor.xhtml, seria uma das várias páginas que iria compor a marcação CONTEUDO, assim como quero ter uma página TOPO.HXTML, e outra RODAPE.XHTML.

Não sei se a minha logica esta certa, mas quando eu desenvolvo alguma coisa usando o Composer Design, é assim que faço. Agora pode ser que no facelets a logica seja um pouco diferente, e está osso pra saber ja que o site oficial deles com a documentacao esta fora do ar (ou o proxy da empresa nao esta deixando eu acessar).

Obrigado

[quote=diegocharles]hehehe Acho que nao to explicando direito a minha lógica:

no web.xml, eu chamo o template.xhtml, pq ele é o meu composer, e la eu marquei as posições TOPO, CONTEUDO, RODAPE.

O meu setor.xhtml, seria uma das várias páginas que iria compor a marcação CONTEUDO, assim como quero ter uma página TOPO.HXTML, e outra RODAPE.XHTML.

Não sei se a minha logica esta certa, mas quando eu desenvolvo alguma coisa usando o Composer Design, é assim que faço. Agora pode ser que no facelets a logica seja um pouco diferente, e está osso pra saber ja que o site oficial deles com a documentacao esta fora do ar (ou o proxy da empresa nao esta deixando eu acessar).

Obrigado [/quote]

Então… para isso… https://facelets.dev.java.net/ de uma lida na documentação, ela explica como criar um template e usar nas páginas.

qualquer cois é só avisar

Abraço

Estou com um problema quero usar Richfaces e facelets.

coloquei no xhtml : xmlns:rich=“http://richfaces.org/rich

dentro do arquivo xhtml chamo o compomente richfaces: <rich:calendar></rich:calendar>

mais dentro dos componente richfaces não tenho acesso aos atributos, so tendo acesso ao atributo id, estou usando
facelets 1.1.14 e richfaces 3.3.0

Como esta :<rich:calendar></rich:calendar>

Como deveria esta <rich:calendar converter="" currentDate="" dayStyleClass=""> </rich:calendar>

Desde ja agradeco a todos.