2015-10-06 85 views
0

我有以下豆:自動完成與Primefaces

public List<Kunden> autocomplete(String nummer) { 

    List<Kunden> allNummern = kundenDao.alleNummern(); 
    List<Kunden> gefiltert = new ArrayList<Kunden>(); 
    for (Kunden k : allNummern) { 
     String convert = String.valueOf(k.getKundennummer()); 
     if (convert.startsWith(nummer)) { 
      gefiltert.add(k); 
     } 
     else 
     { 

      kunde.setKundennummer(Long.parseLong(nummer)); 
      kunde.setFirma("Noch nicht vergeben"); 
      gefiltert.add(kunde); 
     } 

    } 

    HashSet<Kunden> hashSet = new HashSet<Kunden>(allNummern); 
    gefiltert.clear(); 
    gefiltert.addAll(hashSet); 


    return gefiltert; 

} 

我的DAO類看起來是這樣的:

public class KundenDAO implements Serializable{ 


private static final long serialVersionUID = 1L; 

private EntityManagerFactory emf = Persistence 
     .createEntityManagerFactory("auditcheck 3.0"); 

public List<Kunden> alleNummern() { 
    EntityManager em = emf.createEntityManager(); 
    Query q = em.createQuery("SELECT DISTINCT k FROM Kunden k"); 
    List<Kunden> nummern = q.getResultList(); 
    return nummern; 

    } 
} 

這是我的看法代碼:

<prime:autoComplete id="auto" value="#{neu.kundennummer}" autocomplete="false" minQueryLength="1" completeMethod="#{neu.autocomplete}" required="true" var="k" itemValue="#{k.kundennummer}" itemLabel="#{k.kundennummer}" forceSelection="true"> 
        <prime:column> 
         <h:outputText value="#{k.kundennummer} - #{k.firma}" /> 
        </prime:column> 
       </prime:autoComplete> 

我的問題是,我想要的是,如果自動完成方法未在列表中找到某些條目,則使用來自視圖的輸入字段的值。 但它不工作。所有發生的事情是,可以看到我列表中的所有信息,並且當我開始向其他數字發送小費並且想要確認時,該值不顯示。我使用一個HashMap集合(數字 - 工廠),向用戶顯示。

回答

0

那麼,爲什麼你有forceSelection="true"?該屬性強制用戶從現有選項中進行選擇,如果您刪除它,則用戶可以輸入他想要的任何內容。

+0

非常感謝!這解決了我的問題;) – user3515460