p: autoComplete itemLabel выдает «Класс 'java.lang.String' не имеет свойства 'label'».

Я перехожу с IceFaces на PrimeFaces (я действительно хотел перейти на RichFaces, но вызываю ошибку в новой версии, я не буду), и у меня возникли некоторые трудности, чтобы правильно реализовать автозаполнение простых шрифтов. Согласно его руководству мне просто нужно реализовать метод, который возвращает список объектов, и в этом случае требуется конвертер.

Список, который я возвращаю, представляет собой список javax.faces.model.SelectItem, я действительно не понимаю, зачем мне создавать преобразователь для этого, но давайте продолжим.Я создал простой конвертер только для тестирования, но Primefaces не распознает мой конвертер и возвращает эту ошибку в браузере:

/resources/components/popups/popupBuscaPessoa.xhtml @ 35,41 itemLabel = "# {pessoa. label} ": класс 'java.lang.String' не имеет свойства 'label'.

Это мой класс преобразователя (просто для проверки):

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();
}
}

Здесь я пытаюсь использовать p: autocomplete:

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

Я сделал что-то не так? Нет ли конвертера по умолчанию для SelectItem? Есть ли более простой способ реализовать этот преобразователь?

7
задан paulo.bing 18 January 2019 в 05:37
поделиться