(JSF) java.lang.NullPointerException em ActionListener

Pessoal alguém poderia me ajudar??

                         <rich:column>
                           <f:facet name="header">
                                    <h:outputText value="Editar" />
                                </f:facet>
                                <h:commandLink actionListener="#{PredioControle.removeAction}"
                                               >
                                    <f:param id="id" name="idPredioExcluir" value="#{column.id}" />
                                    <h:graphicImage url="/imagens/b_exec.png" style="width:15px;border:none;" />
                                </h:commandLink>    
                         </rich:column>
public void removeAction(javax.faces.event.ActionEvent evento){
        
        UIComponent link = evento.getComponent();
        UIParameter param = (UIParameter) link.findComponent("idPredioExcluir");
        Integer id = (Integer) param.getValue(); //<b>linha 84</b>
        
    }

Quando acionado o botão eu recebo um exception

Received 'java.lang.NullPointerException' when invoking action listener '#{PredioControle.removeAction}' for component 'j_id_id92'
java.lang.NullPointerException
        at controle.PredioControle.removeAction(PredioControle.java:84)

e quando uso o action ao invés do actionListener funciona normal

Grato

Cara, pelo que eu entendi vc tem uma tabela e em cada linha da tabela tem um comando que realiza alguma ação, e vc está fazendo desta forma para pegar qual linha foi selecionada, correto?
Se for este o caso experimenta fazer um binding da sua tabela com o seu managed bean e no commandLink commandButton vc usa o atributo action para apontar o seu metodo. No metodo vc usa o metodo getRowData da tabela pra pegar o objeto da linha selecionada, assim:

Predio predioSelecionado = (Predio) tabela.getRowData()

Kra obrigado pela dica,

Na verdade eu tenho uma tabela com botões editar e excluir, etc. Então eu coloquei uma action no meu command link

                         &lt;rich:column&gt;
                                &lt;f:facet name="header"&gt;
                                    &lt;h:outputText value="Excluir" /&gt;
                                &lt;/f:facet&gt;
                                &lt;h:commandLink action="#{PredioControle.removePredio}" immediate="true"&gt;
                                    &lt;f:param  name="idPredioRemove" value="#{column.id}" /&gt;
                                    &lt;h:graphicImage url="/imagens/b_drop.png" style="width:15px;border:none;" /&gt;
                                &lt;/h:commandLink&gt;    
                         &lt;/rich:column&gt;

e no managedbean


 public String removePredio(){
         
        FacesContext context = FacesContext.getCurrentInstance();
         String id = getPredioId(context);
         criteria.add(Restrictions.eq("id", Integer.parseInt(id)));
         List&lt;Predio&gt; prediolist = criteria.list();
        
         Predio predio2 = prediolist.get(0);
         System.out.println(" Predio = :"+ predio2.getNome());
         
         dao.delete(predio2);
        
         return "";
    }

Isso funcionou perfeitament, só que eu queria usar com ACTIONLISTENER ao invés de ACTION

Abraço e obrigado