[RESOLVIDO]Ajuda para pegar Path do Template do facelets

4 respostas
V

Estou trabalhando com JSF e facelets e não esotu conseguindo pegar o template nas minhas páginas? Alguém me ajuda, plz! :)

Aqui está a estrutura do meu projeto: http://imageupload.org/en/file/190185/it1.jpg.html

A página index funciona normal, a página que quero acessar é /pages/sistema.xhtml, esta página vem de um redirecionamento do LoginBean despois do login ser validado na index entenderam?

Tentei passar o caminho relativo, o absoluto, e até agora nada!

Aqui está o código de sistema.xhtml...
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
                xmlns:ui="http://java.sun.com/jsf/facelets"
                xmlns:p="http://primefaces.org/ui"
                xmlns:h="http://java.sun.com/jsf/html"
                xmlns:f="http://java.sun.com/jsf/core"
                template="/InTouchMaven/templates/index_template.xhtml">

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

    <ui:define name="corpo">
        corpo
        <img src="/InTouchMaven/resources/imagens/error/Internet-Document-icon.png" id="icone-logo"/>
        <h:outputText value="#{loginManagedBean.pessoa.nome}"/>
        <p:spinner/>
    </ui:define>

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

</ui:composition>

O que será que pode estar havendo?

4 Respostas

T
segue um exemplo abaixo:
<!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:p="http://primefaces.org/ui">
      <ui:composition template="/InTouchMaven/templates/index_template.xhtml">
       <ui:define name="corpo">
<h:head>
</h:head>
  <h:body>

***seu conteudo aqui
  
</h:body>    

      </ui:define>
  </ui:composition>
 </html>

*** - Define o caminho e nome do seu template
** - Define em qual parte do seu template ela vai ser exibida

Nesse caso eu coloquei para ser exibido no corpo do seu template

qualquer duvida estamos aqui

Vlw

V

Já tentei de tudo e até agora nada, tentei o que você me disse tmvolpato e nada… Sou capaz de fazer o up do meu projeto pra mostrar isso… Tem alguma coisa a ver se a página que vai chamar o template está dentro de outra pasta e ão na raiz do contexto? Tipo testei em outro projeto e funcionou mas os arquivos no meu estão organizados da seguinte forma:

—WebContext
|
|-pages
| |
| -sistema.xhtml
|-templates
| |
| -index-template.xhtml
|
-index.xhtml

A index contém uma página inicial customizada que ao realizar o login redireciona para sistema que é a entrada do sistema propriamente dita e sistema implementa index-template… Alguém sabe como resolvo isso? Tô a muito tempo moendo com isso…

V

O mais engraçado de tudo não é isso, o mais engraçado(rir pra não chorar) é que modifiquei o web.xml pra chamar a pagina /pages/index2_1.xhtml como página inicial e ele funciona direitinho quando chamo a aplicação (localhost:8080/InTouch/)mas quando passo a url absoluta (localhost:8080/InTouch/pages/index2_1.xhtml) da página o template não carrega…

O que danado é isso?


V

Pessoal, consegui resolver finalmente. O problema estava no meu ManagedBean, no redirecionamento eu não estava passando o “/faces/” lá no web.xml, tava passando somente “/nomedaminhapagina.xhtml”. Agora está assim e está funcionando…

public void login(ActionEvent actionEvent) {
//        RequestContext context = RequestContext.getCurrentInstance();
        FacesMessage msg = null;
        boolean loggedIn = false;
        try {
            //Verifica e retorna a pessoa com usuário e senha passados.
            Pessoa p = serviceInterface.buscarPorLoginESenha(usuario, senha);
            //faz a verificaçao.
            if (p != null) {
                System.out.println(p);
                //Seta a pessoa encontrada no bean gerenciado.
                this.pessoa = p;
                loggedIn = true;
                msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Sessão iniciada", "Bem-vindo, " + p.getNome() + ".");
            } else {
                //lança exceção.
                System.out.println(p);
                loggedIn = false;
                msg = new FacesMessage(FacesMessage.SEVERITY_WARN, "Login inválido", "Verifique seu nome de usuário e senha.");
            }
        } catch (PessoaException ex) {
            msg = new FacesMessage(FacesMessage.SEVERITY_FATAL, "PessoaException", ex.getMessage());
            Logger.getLogger(LoginManagedBean.class.getName()).log(Level.SEVERE, null, ex);
        } catch (Exception e) {
            msg = new FacesMessage(FacesMessage.SEVERITY_FATAL, "Erro de Conexão", "Conexão recusada ou não disponível. Verifique sua conexão de internet");
        }
        //Adiciona mensagem a ser exibida na view.
        FacesContext.getCurrentInstance().addMessage(null, msg);
        //Se logado, redireciona.
        if (loggedIn) {
            try {
                FacesContext.getCurrentInstance().getExternalContext().redirect(
                        FacesContext.getCurrentInstance().
                        getExternalContext().getRequestContextPath() + "/faces/pages/sistema.xhtml");
            } catch (IOException ex) {
                Logger.getLogger(LoginManagedBean.class.getName()).log(Level.SEVERE, null, ex);
            }
        } else {
        }
    }

Obrigado a todos pela atenção.

Criado 29 de fevereiro de 2012
Ultima resposta 1 de mar. de 2012
Respostas 4
Participantes 2