Converter PrimeFaces p:selectOneMenu

Estou tentando usar o p:selectOneMenu ou o autoComplete com POJO, mas ele não esta encontrando o converter; Aparece o seguinte erro:
[color=red]Erro de expressão: Objeto denominado: livro não encontrado.[/color]
Segue códigos:
vendas.xhtml

[code]<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f=“http://java.sun.com/jsf/core”>
<ui:decorate template=“template.xhtml”>
<ui:define name=“centro”>
<h:form prependId=“false”>

            &lt;p:panel&gt; 
                &lt;h:panelGrid columns="5"&gt; 
                    &lt;p:commandButton value="Nova Venda" actionListener="#{vendaController.prepararAdicionarVenda}" icon="ui-icon-plusthick" update="@([id$=infosVenda])" oncomplete="dialogGerVenda.show()"/&gt;
                    &lt;h:commandLink&gt;  
                        &lt;p:graphicImage value="/images/excel.png" /&gt;  
                        &lt;p:dataExporter type="xls" target="tabela" fileName="listarVendas" /&gt;  
                    &lt;/h:commandLink&gt;  

                    &lt;h:commandLink&gt;  
                        &lt;p:graphicImage value="/images/pdf.png" /&gt;  
                        &lt;p:dataExporter type="pdf" target="tabela" fileName="listarVendas"/&gt;  
                    &lt;/h:commandLink&gt;  

                    &lt;h:commandLink&gt;  
                        &lt;p:graphicImage value="/images/csv.png" /&gt;  
                        &lt;p:dataExporter type="csv" target="tabela" fileName="listarVendas" /&gt;  
                    &lt;/h:commandLink&gt;  

                    &lt;h:commandLink&gt;  
                        &lt;p:graphicImage value="/images/xml.png" /&gt;  
                        &lt;p:dataExporter type="xml" target="tabela" fileName="listarVendas" /&gt;  
                    &lt;/h:commandLink&gt;  
                &lt;/h:panelGrid&gt;
            &lt;/p:panel&gt;  

            &lt;p:dataTable id="tabela" var="venda" value="#{vendaController.listarVendas}" paginator="true" rows="6" rowsPerPageTemplate="6,15,30,50,100"&gt;  
                &lt;f:facet name="header"&gt;Lista de Vendas&lt;/f:facet&gt;  
                &lt;p:column&gt;
                    &lt;f:facet name="header"&gt;
                        &lt;h:outputText value="Data Venda"/&gt;
                    &lt;/f:facet&gt;
                    &lt;h:outputText value="#{venda.dataVenda}"&gt; &lt;f:convertDateTime pattern="dd/MM/yyyy"/&gt;  &lt;/h:outputText&gt;
                &lt;/p:column&gt;
                &lt;p:column&gt;
                    &lt;f:facet name="header"&gt;
                        &lt;h:outputText value="Total"/&gt;
                    &lt;/f:facet&gt;
                    &lt;h:outputText value="#{venda.totalVenda}"/&gt;
                &lt;/p:column&gt;
                &lt;p:column style="text-align: center"&gt;
                    &lt;f:facet name="header"&gt;
                        &lt;h:outputText value="Alterar"/&gt;
                    &lt;/f:facet&gt;
                    &lt;p:commandButton actionListener="#{vendaController.prepararAlterarVenda}" icon="ui-icon-pencil" update="@([id$=infosVenda])" oncomplete="dialogGerVenda.show()"/&gt;
                &lt;/p:column&gt;
                &lt;p:column style="text-align: center"&gt;
                    &lt;f:facet name="header"&gt;
                        &lt;h:outputText value="Excluir"/&gt;
                    &lt;/f:facet&gt;
                    &lt;p:commandButton update="@([id$=tabela]);@([id$=growl])" actionListener="#{vendaController.excluirVenda}" icon="ui-icon-trash" /&gt;
                &lt;/p:column&gt;
            &lt;/p:dataTable&gt;  
        &lt;/h:form&gt;

        &lt;p:dialog appendToBody="true" header="Gerencia de Venda" widgetVar="dialogGerVenda"  resizable="false" modal="true" showEffect="explode" width="500"&gt;
            &lt;h:form prependId="false"&gt;


                &lt;p:panelGrid id="infosVenda" columns="2" style="margin-bottom:10px"&gt;

                    &lt;p:outputLabel for="dataVenda" value="Data Venda:" /&gt;
                    &lt;p:calendar required="true" id="dataVenda" value="#{vendaController.venda.dataVenda}" pattern="dd/MM/yyyy"/&gt;

                    &lt;p:outputLabel for="totalVenda" value="Total Venda:" /&gt;
                    &lt;p:spinner required="true" id="totalVenda" value="#{vendaController.venda.totalVenda}" /&gt;

                    &lt;h:outputText value="Livro: " /&gt;  
                    &lt;p:selectOneMenu value="#{vendaController.livro}" effect="fade" converter="livro"&gt;  
                        &lt;f:selectItem itemLabel="Selecione" itemValue="" /&gt;  
                        &lt;f:selectItems value="#{livroController.listarLivros}" var="livro" itemLabel="#{livro.titulo}" itemValue="#{livro}"/&gt;  
                    &lt;/p:selectOneMenu&gt;  

                    &lt;p:commandButton update="@([id$=tabela]);@([id$=growl])" actionListener="#{vendaController.salvarVenda}" icon="ui-icon-check" value="Salvar Venda" oncomplete="dialogGerVenda.show()"/&gt;
                &lt;/p:panelGrid&gt;
            &lt;/h:form&gt;
        &lt;/p:dialog&gt;
    &lt;/ui:define&gt;  
&lt;/ui:decorate&gt;  

</html>[/code]

VendaController.java

[code]/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */
    package Controller;

import Dao.LivroDAOImp;
import Dao.VendaDAO;
import Dao.VendaDAOImp;
import Model.Livro;
import Model.Venda;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;
import org.primefaces.event.UnselectEvent;

@ManagedBean
@SessionScoped
public class VendaController {

private Venda venda = new Venda();
private DataModel listaVendas;
private Livro livro;

public DataModel getListarVendas() {
    List&lt;Venda&gt; lista = new VendaDAOImp().list();
    listaVendas = new ListDataModel(lista);
    return listaVendas;
}

public Livro getLivro() {
    return livro;
}

public void setLivro(Livro livro) {
    this.livro = livro;
}


public Venda getVenda() {
    return venda;
}

public void setVenda(Venda venda) {
    this.venda = venda;
}

public void prepararAdicionarVenda(ActionEvent actionEvent) {
    venda = new Venda();
}

public void prepararAlterarVenda(ActionEvent actionEvent) {
    venda = (Venda) (listaVendas.getRowData());
}

public String excluirVenda() {

    Venda vendaTemp = (Venda) (listaVendas.getRowData());
    VendaDAO dao = new VendaDAOImp();
    dao.remove(vendaTemp);
    FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Excluído, ", "Venda excluído com sucesso!"));
    return "index";

}

public void salvarVenda(ActionEvent actionEvent) {
    VendaDAO dao = new VendaDAOImp();
    dao.save(venda);
    FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Salvo, ", "Venda salvo com sucesso!"));
}

}
[/code]

LivroConverter.java

[code]package Converter;

import Controller.LivroController;
import Model.Livro;
import java.util.ArrayList;
import java.util.List;
import javax.faces.application.FacesMessage;

import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.ConverterException;

public class LivroConverter implements Converter {

public static List&lt;Livro&gt; livroDB= (List&lt;Livro&gt;) new LivroController().getListarLivros();  


public Object getAsObject(FacesContext facesContext, UIComponent component, String submittedValue) {  
    if (submittedValue.trim().equals("")) {  
        return null;  
    } else {  
        try {  
            String titulo= submittedValue;  

            for (Livro l : livroDB) {  
                if (l.getTitulo().equals(titulo)) {  
                    return l;  
                }  
            }  

        } catch(NumberFormatException exception) {  
            throw new ConverterException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "Conversion Error", "Not a valid livro"));  
        }  
    }  

    return null;  
}  

public String getAsString(FacesContext facesContext, UIComponent component, Object value) {  
    if (value == null || value.equals("")) {  
        return "";  
    } else {  
        return String.valueOf(((Livro) value).getTitulo());  
    }  
}  

}

[/code]

Aguardo… =/ preciso com urgencia