Erro com <navigation-rule> <to-view-id>

6 respostas
F

Olá pessoal.

eu estou tendo um problema de redirecionamento:

eu possuo os seguintes arquivos na minha aplicação: (JSF + FACELETS)

footer.xhtml
template.xhtml
/teste/user/tab.xhtml
/teste/user/form/list.xhtml

No arquivo template.xhtml, eu tenho um include do arquivo footer.xhtml e o arquivo /teste/user/form/list.xhtml usa o template.xhtml como template, de forma que a list.xhtml contém também o aquivo footer.xhtml.

nesse footer.xhtml, eu tenho um commandLink que quando clicado deveria acessar o bean de controle que limparia umas variáveis e retornaria para a /teste/user/form/list.xhtml.

(trecho do código da footer.xhtml)

<h:commandLink id="listForms" value="Formulário" action="#{form_controller.listar}"/>

método listar do bean

public String listar() { reset();//limpa as variáveis para fazer nova busca return "listForms"; }

e no meu faces-config:

<navigation-rule> <navigation-case> <from-outcome>listForms</from-outcome> <to-view-id>/teste/user/form/list.xhtml</to-view-id> </navigation-case> </navigation-rule>

O problema é que quando eu clico no link do footer.xhtml ele da um erro:

Caused by: java.io.FileNotFoundException: /teste/user/form/list.xhtml Not Found in ExternalContext as a Resource

eu to passando o diretório errado pelo faces-config?

já tentei de outras formas e não tá dando certo :S

valeu!

6 Respostas

rdgms

Que pagina vai retornar a"listForms"?
Coloca antes de abrir a tag navigation-case isso:

<from-view-id>/pagina.jsp</from-view-id>
marcosharbs

é a página que contém o commandButton que chama o metodo listar deve estar definida no navigation case, ficaria assim:

<navigation-rule>   
        <from-view-id>/pagina.xhtml</from-view-id>
        <navigation-case>   
            <from-outcome>listForms</from-outcome>   
            <to-view-id>/teste/user/form/list.xhtml</to-view-id>   
        </navigation-case>   
</navigation-rule>

ou

<navigation-rule>   
        <from-view-id>*</from-view-id>
        <navigation-case>   
            <from-outcome>listForms</from-outcome>   
            <to-view-id>/teste/user/form/list.xhtml</to-view-id>   
        </navigation-case>   
</navigation-rule>

nesse segndo caso toda pagina que retorna listForms ele vai redireciona pra list.xhtml

F

valeu por responder, rdgms.
Então. eu não tinha configurado o .

eu alterei meu faces-config para

<navigation-rule> <from-view-id>*</from-view-id> <navigation-case> <from-outcome>listForms</from-outcome> <to-view-id>/teste/user/form/list.xhtml</to-view-id> </navigation-case> </navigation-rule>

e no footer.xhtml continua:

<h:commandLink id="listForms" value="Formulário" action="#{form_controller.listar}"/>

e no bean:

public String listar() { reset();//limpa as variáveis para fazer nova busca return "listForms"; }

e ainda está com o erro

Caused by: java.io.FileNotFoundException: /teste/user/form/list.xhtml Not Found in ExternalContext as a Resource

marcosharbs

ve se tá certo seu caminho, pela mensagem de erro parece que ele não está achando a pagina nesse caminho, ve se o nome ta certo tb dos diretorios e da pagina

rdgms

É cara isso deve resolver, este projeto que voce esta desenvolvendo é pra valer?
porque se for cara um conselho utilize algum framework ajax (richfaces por exemplo) para desenvolver isso
ma minha opinião voce fazer um projeto assim com (cadastroCliente.jsp,consultaCliente.jsp,visualizaçãoCliente.jsp) não é mais
funcional nos dias de hoje …
flw boa sorte^^

F

Eu estou desenvolvendo uma aplicação usando JSF + Richfaces + Facelets + Hibernate

Então, eu fiz um teste pegando o link que estava na pagina footer.xhtml e coloquei esse link direto no arquivo template.xhtml. Anteriormente o arquivo footer.xhtml estava via include no template.xhtml.
Colocando o link <h:commandLink id="listForms" value="Formulário" action="#{form_controller.listar}"/>

no template.xhtml (que está no mesmo diretório que o footer.xhtml) e o redirecionamento funcionou sem nenhum problema.
Por enquanto eu vou deixar assim… bem estranho isso né?

valeu pessoal

Criado 30 de janeiro de 2009
Ultima resposta 30 de jan. de 2009
Respostas 6
Participantes 3