JSF: Não está redirecionando para a página descrita!

4 respostas
F

Olá pessoal. To com um probleminha que eu não sei o que está acontecendo:

esse é um trecho do meu jsp:

<h:commandLink value="teste" actionListener="#{form1.teste}">
                                    <f:param id="editId" name="idTeste" value="#{item.numForm}"/>
                                </h:commandLink>

esse é o meu método teste:

public void teste(ActionEvent event) {
        UIComponent comandLink = event.getComponent();
        UIParameter parameter = (UIParameter) comandLink.findComponent("editId");
        int id = (Integer) parameter.getValue();
        form1 = findForm1(id);
        
        teste1();
    }
    
    public String teste1() {
        return "form1_detail";
    }
e no meu faces-config:
<navigation-rule>
        <navigation-case>
            <from-outcome>form1_detail</from-outcome>
            <to-view-id>/form1/Detail.jsp</to-view-id>
        </navigation-case>
    </navigation-rule>

Quando eu testo, não dá nenhum erro.
O único problema é que não tá redirecionando pra página Detail.jsp!
Tem alguma coisa de errada e eu não estou vendo?

valeu!

4 Respostas

rafaelvalerini

Então é que ocorre o seguinte:

Quando vc utiliza um actionListener o seu default é void correto?

então não tem como vc enviar para outra página.

Eu aconselharia vc a colocar este parametro em um inputHidden e usar um action ao invés de actionListener, ai vc conseguiria recuperar esse parametro e mudar de página, pois o retorno do método é uma String.

Ah mais uma coisa, faltou um pouco de conceito ai no seu código. Quando vc chama um método que retorna uma String, o retorno não é valido para o método que o chama EX:

//Conceito Orientação a objeto errado
public void testeSemRetorno(){
  testeComRetorno();
}

private String testeComRetorno(){
   return "teste";
}

//o correto seria, caso vc queira retornar o valor do método testeComRetorno();
public String testeSemRetorno(){
  return testeComRetorno();
}

private String testeComRetorno(){
   return "teste";
}

Espero ter ajudado. FLW

julianoeustaquio

Página

<t:commandLink action="edit" actionListener="#{BuscaEstados.prepareEdit}" >
    <h:outputText value="Editar"/>
    <f:param id="ufcodigo" name="ufcodigo" value="#{row.ufcodigo}" />
</t:commandLink>

Faces Config

<navigation-rule>
        <from-view-id>/principal/principal.xhtml</from-view-id>       
        <navigation-case>
            <from-outcome>edit</from-outcome>
            <to-view-id>/cadastro/valida/valida.jsf</to-view-id>
        </navigation-case>
    </navigation-rule>

Repare que na tag “commandLink” eu tenho o ACTION igual ao texto do meu “from-outcome”

Espero ter ajudado.

F

valeu rafaelvalerini . Eu tentei do “modo certo” e do “modo errado”.
E ambos não funcionaram.
Eu utilizei o exemplo do julianoeustaquio e funcionou certinho!

Obrigado pela ajuda dos dois.
Até mais!

rafaelvalerini

São dois modos diferentes de serem feitos. o que eu lhe disse e o que o Juliano usou, ambos vaum funcionar, mas no caso do meu exemplo, vc teria que adaptar ao seu caso. no exemplo não coloquei nenhuma aplicação e configuração, somente expliquei conceitos de Orientação a Objeto

Criado 4 de novembro de 2008
Ultima resposta 4 de nov. de 2008
Respostas 4
Participantes 3