Dúvida com Facelets

7 respostas
Schoker

Bom dia pessoal…

é o seguinte…eu criei um “modelo de facelets” e depois um “cliente de modelo de facelest”

segue:

principal.xhtml (template)

<?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">
    
    <h:head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <link href="./../resources/css/default.css" rel="stylesheet" type="text/css" />
        <link href="./../resources/css/cssLayout.css" rel="stylesheet" type="text/css" />
        <title>Facelets Template</title>
    </h:head>
    
    <h:body>
        
        <div id="top" class="top">
            <ui:insert name="top">Top</ui:insert>
        </div>
        
        <div id="content" class="center_content">
            <ui:insert name="content">Content</ui:insert>
        </div>
        
    </h:body>
    
</html>

index.xhtml (cliente de modelo de facelets)

<?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="./facelets/principal.xhtml">
            
            <ui:define name="top">
                <a href="http://guj.com.br">GUJ</a>
            </ui:define>

            <ui:define name="content">
                content
            </ui:define>

        </ui:composition>
        
    </body>
</html>

Como que eu faço para que o link seja aberto da content?

Desde já agradeço!

7 Respostas

dev.rafael

Eim :?:

Schoker

eu qeria que todo link que estivesse na pagina abrisse na div content…como se fosse ajax…

dev.rafael

A maneira mais simples de se implementar isso é através de iframes e algumas suites de componentes do JSF, como o RichFaces, oferencem componentes com funcionalidades parecidas.

PS.: Diferentemente de que algumas pessoas dizem, Facelets não vai facilitar a implementação dessa taréfa mais que HTML já faz.

Schoker

uehh…me falaram que eu teria que usar facelets pra fazer isso…

eh pq meu projeto tem varias paginas jsf…e eu preciso carregar essas paginas em div…e eu soh consegui isso com jsp:include…e nao quero usar iframe…

qual é o melhor jeito?

dev.rafael

O uso de includes resolve. No Facelets vc pode usar o component ui:include mas, assim como em JSP, o uso do include não fará com q as páginas sejam carregadas via ajax, isso vc vai ter que implementar sózinho ou recorer à alguma suite de componentes como RichFaces ou PrimeFaces.

Schoker

tem como eu trocar as paginas via javascript?

dev.rafael

Creio q sim mas eu ñ sou exatamente um especialista em Javascript. Vc pode conseguir esse efeito usando apenas JSF assim:

template.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">  
    <h:head>  
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />  
        <h:outputStylesheet name="css/default.css" />
        <h:outputStylesheet name="css/cssLayout.css" />
        <title>Facelets Template</title>  
    </h:head>  
    <h:body>  
        <div id="top" class="top">  
            <ui:insert name="top">Top</ui:insert>  
        </div>  
        <div id="content" class="center_content">  
            <ui:insert name="content">Content</ui:insert>  
        </div>  
    </h:body>  
</html>

client.xhtml

<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">  
  <ui:composition template="template.xhtml">
    <ui:define name="content">
      <h:form>
        <h:commandLink value="Mudar Conteudo" action="#{contentManager.changeContent}">
          <f:ajax event="click" render="contentPane" />
        </h:commandLink>
        <h:panelGroup id="contentPane">
          <ui:include src="#{contentManager.content}" />
        </h:panelGroup>
      </h:form>
    </ui:define>
  </ui:composition>
</html>
Criado 7 de dezembro de 2010
Ultima resposta 7 de dez. de 2010
Respostas 7
Participantes 2