p: autoComplete itemLabel lança “A classe 'java.lang.String' não possui a propriedade 'label'.”

Estou mudando de IceFaces para PrimeFaces (eu realmente queria mudar para RichFaces, mas causo um bug em uma nova versão, não vou) e estou tendo algumas dificuldades para implementar corretamente as primefaces corretamente o AutoCompletar. De acordo com o manual, só preciso implementar um método que retorne uma lista de objetos e, nesse caso, é necessário um converso

A lista que estou retornando é uma lista de javax.faces.model.SelectItem, realmente não consigo entender por que preciso criar um conversor para isso, mas vamos continuar. Criei um conversor simples apenas para testar, mas o primefaces não reconhece meu conversor e retorna esse erro no navegador:

/ resources / components / popups / popupBuscaPessoa.xhtml @ 35,41 itemLabel = "# {pessoa.label}": A classe 'java.lang.String' não possui a propriedade 'label'.

Esta é a minha classe de conversor (apenas para testar):

public class ConversorSelectItem implements Converter {

@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {      
     if (value!=null && value.isEmpty())
         return null;

     SelectItem selectItem=new SelectItem();
     selectItem.setLabel(value);
     return selectItem;     
}

@Override
public String getAsString(FacesContext context, UIComponent component, Object object) {
    return ((SelectItem)object).getLabel();
}
}

É aqui que eu tento usar o p: autocomplete:

<p:autoComplete value="#{modeloPopupBuscaPessoa.itemSelecionado}"
            completeMethod="#{controladorSugestaoPessoa.atualizarSugestoes}"
            var="pessoa" itemLabel="#{pessoa.label}" itemValue="#{pessoa.value}"
            converter="#{conversorSelectItem}"/>

Fiz algo de errado? Não existe um conversor padrão para o SelectItem? Existe uma maneira mais fácil de implementar este conversor?

questionAnswers(5)

yourAnswerToTheQuestion