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
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.