JSF: problemas com templates

Estou com problemas em uma aplicação JSF e é difícil de explicar

a aplicação tem uma página template com links para outras páginas.

Quando a aplicação é executada abre a tela de login ao digitar o login e senha deve ir para tela de links(menus) para ser escolhido(template).

template:

<h:form style ="float:left;" rendered ="#{not empty sessionScope.usuario}">
		
			<h:link value="Filhos" outcome="filhos"/>
 &nbsp;
 			<h:link value="Pais" outcome="pais"/> 
 &nbsp;		
            <h:link value="Endereco" outcome="endereco"/>	
 &nbsp;
			<h:commandLink value ="Logout" action ="#{autenticadorBean.registraSaida}"/>
 
		</h:form>
		
		<div style="clear:both">
			</div> </div>

			<div id="conteudo">
				<ui:insert name="conteudo">Espaco para o conteudo da tela</ui:insert>
				</div>

página do link filhos:

<ui:define name="conteudo"> 

		<h1>Filhos</h1>

		<h:form>
			<ui:include src="/formulario-novos-filhos.xhtml"/>
			<ui:include src="/lista-de-filhos.xhtml"/>
		</h:form>
	</ui:define>
</ui:composition>

link pais:

<ui:define name="conteudo">

		<h1>Pais</h1>

		<h:form>
			<ui:include src="/formulario-novos-pais.xhtml"/>
			<ui:include src="/lista-de-pais.xhtml"/>
		</h:form>
	</ui:define>
</ui:composition>

link endereco:

<ui:define name="conteudo">

		<h1>Endereco</h1>

		<h:form>
			<ui:include src="/formulario-novo-endereco.xhtml"/>
			<ui:include src="/lista-de-enderecos.xhtml"/>
		</h:form>
	</ui:define>
</ui:composition>

apesar de semelhantes são lançadas exceções diferentes:

<ui:define name="conteudo"> nas três páginas não é lançada exceção, mas os links não direciona ao conteúdo escolhido.

<ui:define name=" conteudo" (com espaço após as aspas) é lançada exceções diferentes quando o link é clicado.

filhos: é lançada uma exceção de persistência como se aplicação estive tentando inserir o filho antes de abrir o formulário sem mesmo ter dados para a inserção:“could not insert”.

pais: solta a exceção:java.lang.IllegalArgumentException

endereco: solta a exceção do hibernate de endereco não mapeado, mesmo sendo mapeado.

antes de mais nada
você especificou esses outcome no faces-config?

Não.

no material que estou usando como referência não faz nenhuma configuração no faces-config.

como seria?

Encontrei este exemplo, me corijam se eu estiver errado

    <navigation-rule>
      <from-view-id>/tabular.jsp</from-view-id> // página remetente
      <navigation-case>
        <from-outcome>drilldown</from-outcome> //nome do outcome
        <to-view-id>/edit.jsp</to-view-id>           //página destino
      </navigation-case>
    </navigation-rule>

É Isso?

Isto é necessário no JSF 2?

[quote=Alexsandro Lopes]Encontrei este exemplo, me corijam se eu estiver errado

    <navigation-rule>
      <from-view-id>/tabular.jsp</from-view-id> // página remetente
      <navigation-case>
        <from-outcome>drilldown</from-outcome> //nome do outcome
        <to-view-id>/edit.jsp</to-view-id>           //página destino
      </navigation-case>
    </navigation-rule>

É Isso?

Isto é necessário no JSF 2?
[/quote]

Não é necessario mas algumas pessoas ainda usam, isso fica a gosto do fregues

os arquivos .xhtml estão todos no mesmo diretorio?

fiz assim:

         <navigation-rule>
		<from-view-id>/template/template.xhtml</from-view-id>
		<navigation-case>
			<from-outcome>filhos</from-outcome>
			<to-view-id>/filhos.xhtml</to-view-id>
		</navigation-case>
	</navigation-rule>
	
	<navigation-rule>
		<from-view-id>/template/template.xhtml</from-view-id>
		<navigation-case>
			<from-outcome>pais</from-outcome>
			<to-view-id>/pais.xhtml</to-view-id>
		</navigation-case>
	</navigation-rule>
	
	<navigation-rule>
		<from-view-id>/template/template.xhtml</from-view-id>
		<navigation-case>
			<from-outcome>endereco</from-outcome>
			<to-view-id>/endereco.xhtml</to-view-id>
		</navigation-case>
	</navigation-rule>

mas não deu certo. continua com os erros.

o meu gosto é que a aplicação rode sem problemas.

Estão(na raiz), exceto o template que está dentro do diretório: WebContent/WEB-INF/template/template.xhtml por ser um modelo.

cole seu log completo aqui

qual versão do jsf vc está usando

somente o erro:

Jul 18, 2013 10:07:28 PM com.sun.faces.application.view.FaceletViewHandlingStrategy handleRenderException
SEVERE: Error Rendering View[/pais.xhtml]
java.lang.IllegalArgumentException

está acontecendo após digitar login e senha e clicar ok
e com o <ui:define name=“conteudo”> porque há diferença quando faço: <ui:define name=" conteudo"> com espaço após as aspas!

a versão do JSF é 2.0.4

[quote=Alexsandro Lopes]somente o erro:

Jul 18, 2013 10:07:28 PM com.sun.faces.application.view.FaceletViewHandlingStrategy handleRenderException
SEVERE: Error Rendering View[/pais.xhtml]
java.lang.IllegalArgumentException

está acontecendo após digitar login e senha e clicar ok
e com o <ui:define name=“conteudo”> porque há diferença quando faço: <ui:define name=" conteudo"> com espaço após as aspas!

a versão do JSF é 2.0.4[/quote]

use a versão 2.1 pelo menos
e outra cole o código do seu template ai

tenho também um ManagerBean: AutenticacaoBean que caso o login e senha estejam corretos redireciona pra alguma página.

Aí está o problema!

quando é redirecionada para a página filhos.xhtml levanta a exceção:

javax.servlet.ServletException: org.hibernate.exception.GenericJDBCException: could not insert: [br.com.catenna.modelo.entidade.filhos.Filhos]

quando é redirecionada para a página pais.xhtml levanta a exceção:

java.lang.IllegalArgumentException

quando é redirecionada para a página endereco.xhtml levanta a exceção:

javax.servlet.ServletException: org.hibernate.hql.ast.QuerySyntaxException: endereco is not mapped [SELECT x FROM endereco X]

o relacionamento entre as entidades são: Filhos N : 1 Pais N : 1 Endereco

sabendo-se que cada tela devem abrir um formulário de cadastro e uma lista dos respectivos beans.

Opa! não tinha lido sua resposta antes de postar a última.

Caramba! essas bibliotecas JSF estão dando dor de cabeça já vou trocar pela 2ª vez! da última vez esta dando: java.lang.incompatible.class.change.error

a final quantas biblioteca são para JSF? pois no site do Mojarra ao baixar vem apenas um jar.

segue o Template.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">  

<h:head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
	<title>Catenna</title>
</h:head>

<h:body>
	<h:outputStylesheet library="css" name="style.css"/>

	<div id="header">
	<h:form style ="float:left;" rendered ="#{not empty sessionScope.usuario}">
		
			<h:link value="Filhos" outcome="filhos"/>
 &nbsp;
 			<h:link value="Pais" outcome="pais"/> 
 &nbsp;		
            <h:link value="Endereco" outcome="endereco"/>	
 &nbsp;
			<h:commandLink value ="Logout" action ="#{autenticadorBean.registraSaida}"/>
 
		</h:form>
		
		<div style="clear:both">
			</div> </div>

			<div id="conteudo">
				<ui:insert name="conteudo">Espaco para o conteudo da tela</ui:insert>
				</div>

				<div id="footer" style="text-align:center">
					<hr/>
				</div>
</h:body>
</html>

deixe dessa maneira é test

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

<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">    
  
<h:head>  
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>  
    <title>Catenna</title>  
</h:head>  
  
<h:body>  
    <h:outputStylesheet library="css" name="style.css"/>  
  
    <div id="header">  
    <h:form style ="float:left;" rendered ="#{not empty sessionScope.usuario}">  
          
            <h:link value="Filhos" outcome="filhos"/>  
   
            <h:link value="Pais" outcome="pais"/>   
        
            <h:link value="Endereco" outcome="endereco"/>   
   
            <h:commandLink value ="Logout" action ="#{autenticadorBean.registraSaida}"/>  
  
        </h:form>  
          
        <div style="clear:both">  
            </div> </div>  
  
            <div id="conteudo">  
                <ui:insert name="conteudo">
                  <ui:include src="content.xhtml"/> <!-- procure sempre deixar uma página como default -->
                </ui:insert>  
                </div>  
  
                <div id="footer" style="text-align:center">  
                    <hr/>  
                </div>  
</h:body>  
</html>  [/code]

As libs são essas?

javax.faces-2.2.1-sources.jar
javax.faces-2.2.1.jar
jsf-impl-2.2.1.jar
javax.faces-api-2.2.jar

na linha 35 tem:

 <ui:include src="content.xhtml"/>

terei que criar a página content.xhtml?

[quote=Alexsandro Lopes]As libs são essas?

javax.faces-2.2.1-sources.jar
javax.faces-2.2.1.jar
jsf-impl-2.2.1.jar
javax.faces-api-2.2.jar

na linha 35 tem:

 <ui:include src="content.xhtml"/>

terei que criar a página content.xhtml?
[/quote]

é bom vc usar a versão anterior por enquanto

javax.faces-2.1.23.jar //somente essa

isso vai ter que criar é bom trabalhar dessa maneira //não precisa ter esse nome pode ser outro

O que me intriga é que as páginas pais.xhtml, filhos.xhtml e endereco.xhtml que por sinal são semelhantes, são páginas com links, que ao ser clicado abre os formulários e listas.

Tirando a página pais as outras duas logo após o login já vão direto para o sistema chegando até na camada de persistência.

Eu não entendo isso.

Só tenho progresso quando coloco:

[code]<ui:define name=" conteudo"
^
|
ESPAÇO

[/code]

criei a página content.xhtml assim:

<ui:composition template="/WEB-INF/template/template.xhtml"
	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:define name="conteudo">
		<p>Espaco para o conteudo da tela</p>
	</ui:define>
</ui:composition>

mais ficou duplicado com página sobre página:


deveria ficar como nesta imagem

ao abrir este layout o usuário teria a opção de escolher qual a entidade se quer cadastrar ou pesquisar, mas ao clicar esses links com está na figura não há efeito algum somente atualiza a tela sem mudança de conteúdo!

só consigo chegar a esta tela com o espaço no nome da tag define.

sem o espaço, gera exceções distintas que também ocorre quando redireciona a página no ManageBean de autenticação.


você pode passa seu projeto
pq esta vai fica difícil de te ajuda