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?