Erro com f:setPropertyActionListener

Tenho o formulário de cadastro de usuarios e foi só por a tag f:setPropertyActionListener abaixo de h:commandLink que deu o seguinte erro:

javax.servlet.ServletException: /listarUsuarios.xhtml @69,88 <f:setPropertyActionListener> Parent is not of type ActionSource, type is: org.primefaces.component.column.Column@b31b77
javax.faces.webapp.FacesServlet.service(FacesServlet.java:422).

cadusuario.jsf:

[code]

<?xml version="1.0" encoding="ISO-8859-1" ?> Lista de Usuários .ui-widget, .ui-widget .ui-widget { font-size: 12px !important; }

<p:dataTable id="dataTable" value="#{usuariosBean.lista}" var="usuario"  
             paginator="true" rows="20"  
             paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"  
             rowsPerPageTemplate="5,10,15" style="text-align:center;">  

    <p:column style="width:120px;">  
        <f:facet name="header">  
            <h:outputText value="C&oacute;digo" />  
        </f:facet>  
        <h:outputText value="#{usuario.id}" />  
    </p:column>  

    <p:column style="width:500px;">  
        <f:facet name="header">  
            <h:outputText value="Nome" />  
        </f:facet>  
        <h:outputText value="#{usuario.nome}" />  
    </p:column>  

    <p:column style="width:250px;">  
        <f:facet name="header">  
            <h:outputText value="Status" />  
        </f:facet>  
        <h:outputText value="#{usuario.status}" />  
    </p:column>  
    
    <p:column style="width:250px;">  
        <f:facet name="header">  
            <h:outputText value="Data de cadastro" />  
        </f:facet>  
        <h:outputText value="#{usuario.dtCadastro}" />  
    </p:column>  
    
    <p:column style="width:40px;">  
        <f:facet name="header">  
            <h:outputText value="Editar" />  
        </f:facet>  
        <h:commandLink action="#" />  
    </p:column>
    <p:column style="width:40px;">  
        <f:facet name="header">  
            <h:outputText value="Excluir" />  
        </f:facet>  
        <h:commandLink action="#{usuariosBean.excluir}" value="X"/> 
        <f:setPropertyActionListener target="usuariosBean.usuario" value="usuario"></f:setPropertyActionListener>
    </p:column>  
</p:dataTable>  

</h:form>
</p:panel>
</h:body>

[/code]

A TAG deve ficar dentro do h:commandLink.

<h:commandLink action="#{usuariosBean.excluir}" value="X"> <f:setPropertyActionListener target="usuariosBean.usuario" value="usuario" /> </h:commandLink>

Obrigado cara. E como faço para receber o parâmetro no bean?

No exemplo ele passa o id_usuario para uma variavel chama idUsuarioQueVouExcluir no bean.

<h:commandLink action="#{usuariosBean.excluir}" value="X"> <f:setPropertyActionListener target="#{usuarioBean.idUsuarioQueVouExcluir}" value="#{usuariosBean.usuario.id_usuario}" /> </h:commandLink>

  • Estou com o mesmo problema, alguém conseguiu resolver?
  • Ao inserir o código abaixo na página, é retornado o erro <f:setPropertyActionListener> Parent is not of type ActionSource, type is: javax.faces.component.html.HtmlOutputText@6187cd

<h:commandLink action="#{usuariosBean.alterar}" value="Alterar"> <f:setPropertyActionListener target="#{usuarioBean.usuario}" value="#{item}" /> </h:commandLink>

  • Já verifiquei as configurações do bean e estão corretas.
  • O estranho é que o componente já esta dentro de um ActionSource neste caso h:commandLink.