Passar um Objeto como parâmetro via commandLink - JSF

Galera boa tarde.

Estou com o seguinte problema: Estou prosseguindo no aprendizado sobre JSF através de um livro. Estou em uma das partes qual crio um commandLink que chama um método do meu managed bean que realiza a exclusão do item do banco de dados, passando como parâmetro um Objeto. Meu problema está da linha 20 à 22 da minha página JSF:

Vejam a minha estrutura atual:

JSF:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core">
    <head>
        <title>Listagem de Automóveis</title>
    </head>
    <h:body>
        <h:form>
        <h:dataTable border="1" value="#{automovelBean.automoveis}" var="automovel">
            <h:column>
                <f:facet name="header">Id</f:facet>
                #{automovel.id}
            </h:column>
            <h:column><f:facet name="header">Marca</f:facet>#{automovel.marca}</h:column>
            <h:column><f:facet name="header">Modelo</f:facet>#{automovel.modelo}</h:column>
            <h:column><f:facet name="header">Ano Fabricação</f:facet>#{automovel.anoFabricacao}</h:column>
            <h:column><f:facet name="header">Ano Modelo</f:facet>#{automovel.anoModelo}</h:column>
            <h:column><f:facet name="header">Observações</f:facet>#{automovel.observacoes}</h:column>
            <h:column>
                <f:facet name="header">Ação</f:facet>
                <h:commandLink action="#{automovelBean.excluir(automovel)}" value="Editar">
                    <f:param name="automovel" value="#{automovel}" />
                </h:commandLink>
            </h:column>
        </h:dataTable>
        </h:form>
    </h:body>
</html>

Apenas o método na minha classe tipo ManagedBean:

    public void excluir(Automovel automovel){ 
        EntityManager em = JPAUtil.getEntityManager();
        EntityTransaction tx = em.getTransaction();
        tx.begin();
        em.remove(automovel);
        tx.commit();
        em.close();
    }

Nesta minha estrutura, eu tenho o seguinte retorno quando clico no link através de teste no meu navegador:

/listaAutomoveis.xhtml @25,92 action="#{automovelBean.excluir(automovel)}" Failed to parse the expression [#{automovelBean.excluir(automovel)}]

Eu já pesquisei várias maneiras, até achei algumas coisas, mais relacionadas a tipos de dados primitivos, e não objetos e ainda não consegui evoluir.

Poderiam me ajudar qual a forma correta de passar esse parâmetro Objeto ao meu método para realizar a exclusão?

Grato!

Olha aqui http://www.mkyong.com/jsf2/4-ways-to-pass-parameter-from-jsf-page-to-backing-bean/

E ai luksrn, beleza?

Cara valeu esse link que você me passou me ajudou bastante. Como eu estava a procura de uma implementação mais simples, procurei utilizar a 1ª alternativa que o cara exemplificou, inclusive eu troquei a versão da expression language para a 2.2. Após trocar o JAR, a mensagem erro mudou para:

java.lang.IllegalArgumentException: Removing a detached instance br.com.caelum.projetoebook.automoveis.Automovel#4

Acabei tendo que pesquisar mais esse ponto e cheguei a solução no último post deste tópico do GUJ:

http://www.guj.com.br/java/49679-removing-a-detached-instance

Sendo assim cheguei ao seguinte resultado das minhas implementações:

PÁGINA JSF:

            <h:column>
                <f:facet name="header">Ação</f:facet>
                <h:commandLink action="#{automovelBean.excluir(automovel)}" value="Editar" />
            </h:column>


MANAGED BEAN:

    public void excluir(Automovel automovel){ 
        EntityManager em = JPAUtil.getEntityManager();
        EntityTransaction tx = em.getTransaction();
        tx.begin();
        em.remove(em.getReference(Automovel.class, automovel.getId()));
        tx.commit();
        em.close();
    }

Se tiverem alguma sugestão de uma implementação melhor eu agradeço, senão eu vou finalizar o tópico, ok?

Muito obrigado!