Я перехожу с 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? Есть ли более простой способ реализовать этот преобразователь?