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"/>
<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">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"/>
<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">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