Escopo da propriedade do mb

galera … tenho uma lista, que mostra todas as cidades do meu banco de dados, na ultima coluna dessa minha lista, tenho um commandlink pra deletar a respectica cidade da linha na qual o commandlink foi precionado, atraves do envio do envio de parametros, devidamente mapeado no faces-config.

<managed-bean> <managed-bean-name>MBCidade</managed-bean-name> <managed-bean-class>com.metaway.bean.ControleCidade</managed-bean-class> <managed-bean-scope>session</managed-bean-scope> <managed-property> <property-name>codigo2</property-name> <value>#{param.codigo2}</value> </managed-property>


<%@page contentType="text/html" pageEncoding="UTF-8"%>

<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">

<f:view>
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
            <link rel="stylesheet" href="Style.css" type="text/css">
            <title>Metaway</title>
        </head>
        <body>
            <h:form styleClass="form_corpo">
                <h:dataTable value="#{MBCidade.cidades}" var="cid"
                styleClass="tabela"
                columnClasses="tabela_codigo, tabela_nome"
                headerClass="tabela_header">
                    <h:column>
                        <f:facet name="header">
                            <h:outputText value="Codigo"/>
                            <f:param id="codigo" value="codigo"/>
                        </f:facet>
                        <h:commandLink  value="#{cid.codigo}"/>
                    </h:column>
                    <h:column>
                        <f:facet name="header">
                            <h:outputText value="Nome"/>
                            <f:param id="nome" value="nome" />
                        </f:facet>
                        <h:outputText value="#{cid.nome}"/>
                    </h:column>

                    <h:column>
                        <f:facet name="header">
                        </f:facet>
                        <h:commandLink action="#{MBCidade.removeCidade}" value="Excluir"/>
                        <f:param value="#{cid.codigo}" name="codigo2"/>
                    </h:column>
                </h:dataTable>
                <h:panelGrid columns="2">
                    <h:commandButton action="#{MBCidade.retornaCod}" value="Inserir"/>                    
                </h:panelGrid>
            </h:form>
        </body>
    </html>
</f:view>

qnd tento renderizar a pagina ocorre o erro :

javax.servlet.ServletException: The scope of the referenced object: #{param.codigo2} is shorter than the referring object

ou seja, ele diz q meu parametro, que esta mapeado no faces-config.xml, tem o ciclo de vida menor do que meu bean. Não entendi o pq disso estar acontecendo …

alguem ?

:? … n é possivel q ngm tenha tido esse problema antes ?!

porque você não usa o getRowData() ?.. recupera o objeto inteiro da linha selecionado…

pois é … isso n me veio a cabeça hmm
da proxima vez uso getRowData(), da menos trabalho :stuck_out_tongue: