2013-05-09 7 views
-1

La saisie semi-automatique fonctionne très bien, je veux dire quand j'écris quelque chose, elle obtient des valeurs de db et autocomplètes mais quand je sélectionne la valeur, elle montre selectedParty comme nulle.Par la façon dont j'utilise ce convertisseur avec selectOneMenu fonctionne bien, je peux facilement obtenir la valeur sélectionnée, mais il y a un problème avec le composant de saisie semi-automatique.
mon point de vue;primefaces autocomplete sélection retourne 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> 

mon contrôleur;

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

Voici mon convertisseur;

@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

Fournissez plus d'informations .Post votre code de contrôleur. – Makky

+0

@Makky lorsque je débogue le projet, la méthode setSelectedParty s'exécute mais le paramètre selectedParty a une valeur nulle. –

+0

D'où vient le SelectItemsConverter? Est-ce un cours de tierce partie? Sinon, pouvez-vous poster le code source? –

Répondre

-2

utilisation générique Entity Converter

com.sfp.web.beans de paquet;

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

J'ai changé de convertisseur mais je reçois toujours une valeur nulle quand je sélectionne une valeur. –