2013-05-09 4 views
-1

Autocomplete работает нормально, я имею в виду, когда я пишу что-то, он получает значения из db и autocompletes, но когда я выбираю значение, он показывает selectedParty как null.By, как я использую этот конвертер с selectOneMenu, и это отлично работает, я могу легко получить выбранное значение, но есть проблема с компонентом автозаполнения.
с высоты птичьего полета;primefaces autocomplete selection возвращает null

<p:autoComplete id="partySearchAutoId" value="#{myController.selectedParty}" 
            var="party" itemLabel="#{party.partyName}" 
            itemValue="#{party}" converter="genericConverter" 
            forceSelection="true"           
            completeMethod="#{myController.searchParty}"> 
         <p:ajax event="itemSelect" update="soaInputTextId"/> 
        </p:autoComplete> 

мой контроллер;

private Party selectedParty; 

    public List<Party> searchParty(String query) { 

    List<Party> partyList = genericService.getByTemplate(new Party(), "partyName", query); 


    return partyList; 
} 

public Party getSelectedParty() { 
    return selectedParty; 
} 

public void setSelectedParty(Party selectedParty) { 
    this.selectedParty = selectedParty; 
} 

Это мой конвертер;

@FacesConverter("genericConverter") 
public class GenericConverter extends SelectItemsConverter { 

@Override 
public String getAsString(FacesContext context, UIComponent component, Object value) { 
    return value.toString(); 
} 

@Override 
public Object getAsObject(FacesContext context, UIComponent component, String value) { 
    return super.getAsObject(context, component, value); //To change body of generated methods, choose Tools | Templates. 
} 



} 
+2

Предоставить дополнительную информацию. Поставьте свой код контроллера. – Makky

+0

@Makky, когда я отлаживаю проект, выполняется метод setSelectedParty, но параметр selectedParty имеет значение NULL. –

+0

Откуда возникает SelectItemsConverter? Это сторонний класс? Если вы не можете опубликовать исходный код? –

ответ

-2

Использование Generic Entity Преобразователь

com.sfp.web.beans пакет;

import java.util.Map; 
import java.util.Map.Entry; 
import java.util.UUID; 
import java.util.WeakHashMap; 

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

@FacesConverter(value = "entityConverter") 
public class EntityConverter implements Converter { 

    private static Map<Object, String> entities = new WeakHashMap<Object, String>(); 

    @Override 
    public String getAsString(FacesContext context, UIComponent component, Object entity) { 
     synchronized (entities) { 
      if (!entities.containsKey(entity)) { 
       String uuid = UUID.randomUUID().toString(); 
       entities.put(entity, uuid); 
       return uuid; 
      } else { 
       return entities.get(entity); 
      } 
     } 
    } 

    @Override 
    public Object getAsObject(FacesContext context, UIComponent component, String uuid) { 
     for (Entry<Object, String> entry : entities.entrySet()) { 
      if (entry.getValue().equals(uuid)) { 

       return entry.getKey(); 
      } 
     } 
     return null; 
    } 
} 
+1

Я изменил конвертер, но я все еще получаю нулевое значение, когда я выбираю какое-то значение. –

Смежные вопросы