F:setPropertyActionListener - target nulo!

3 respostas
E

Amigos do GUJ, blz?

Espero que alguém possa me ajudar. Estou com o seguinte problema:

Tenho uma página JSP que exibe dados em um rich:dataTable. Uma das colunas tem um ícone para exibir informações adicionais. Essas informações adicionais estão no mesmo objeto que está sendo exibido no dataTable. Em teoria seria o mesmo caso do exemplo http://livedemo.exadel.com/richfaces-demo/richfaces/dataTable.jsf?tab=editDataTable&cid=847298, só que ao invés de opções de Edit e Delete eu tenho esta tal opção de exibir informções adicionais do registro.

Acontece que no meu a4j:commandLink uso um f:setPropertyActionListener e o valor do registro atual que deveria ir para o meu Bean sempre é setado como nulo! E desta forma quando eu tento recuperar a informação para usar em um rich:modalPanel eu não tenho nada!

Vamos ao código:

<f:subview...>
    <rich:dataTable id="dtTipoDocumento" value="#{BeanConsulta.lstResultado}" var="item">
        <rich:column colspan="5" style="background-color:#999999;" styleClass="resultado_cabecalho">
            <h:outputText value="#{item.tipoDocumento}"/>
        </rich:column>
         . . . 
         . . .
        <rich:subTable id="dtDocumento" value="#{item.documentos}" var="documento"
                       onRowClick="f_exibir('#{documento.idDocumentoCripto}', #{acao})"
                       columnClasses="width:auto"
                       rowClasses="row1, row2">
            <rich:column width="auto" styleClass="resultado_consulta" id="coluna1">
                <h:outputText value="#{documento.valorCampo1}"/>
            </rich:column>
            . . . 
            . . .
            <rich:column width="auto" styleClass="resultado_consulta" id="colunaLink" style="align:center">
                <a4j:commandLink ajaxSingle="true" id="linkReferencia" oncomplete="#{rich:component('modalReferencias')}.show();">
                    <h:graphicImage url="images/link.png" rendered="#{documento.sizeReferencias!=0}"/>
                    <f:setPropertyActionListener value="#{documento}" target="#{BeanConsulta.docAtual}"/>
                </a4j:commandLink>
                <rich:toolTip for="linkReferencia" value="Visualizar referências..."/>
            </rich:column>
            . . . 
            . . .
        </rich:subTable>
    </rich:dataTable>
    <rich:modalPanel id="modalReferencias" autosized="true" width="750">
        <rich:dataTable id="dtReferencia" value="#{BeanConsulta.docAtual.docReferencias}" var="referencia"
           onRowMouseOver="this.style.backgroundColor='#E0E27D'"
           onRowMouseOut="this.style.backgroundColor='#FEFDDE'"
           onRowClick="f_exibir('#{referencia.idDocumentoRefCripto}', #{acao})"
           rowClasses="subTable"
           width="100%">
            <f:facet name="header">
                <h:outputText value="Referências"/>
            </f:facet>
            <rich:column width="auto" styleClass="resultado_consulta">
                . . . 
                . . .
                <h:outputText value="#{referencia.descDocumentoRef}"/>
            </rich:column>
        </rich:dataTable>
        <p align="right">
            <a4j:commandButton value="Fechar" id="btnFechar" oncomplete="#{rich:component('modalReferencias')}.hide()"/>
        </p>
    </rich:modalPanel>
</f:subview>

Só para constar, meu Bean tem escopo de sessão.

Alguma sugestão??

3 Respostas

E

Ninguém??? :shock:

walacy

Já tentou fazer isso com o indice?

Fiz essa mesma coisa a um tempo atrás e tive muitos problemas. Só consegui resolver quando usei o indice da lista e depois recuperei o objeto respectivo.

Tem no meu notebook, mas estou no trampo… Tenta ai, se não funcionar me fala que eu copio pra você. :wink:

walacy

Se estiver usando o Seam, mete o objeto como parametro do metódo que funciona… :wink:

#{bean.metodo(objetoAtual)}

E muda a assinatura do método no bean pra receber o objeto do tipo…

Criado 6 de maio de 2010
Ultima resposta 7 de mai. de 2010
Respostas 3
Participantes 2