Primefaces 带素数面的自动完成

Primefaces 带素数面的自动完成,primefaces,managed-bean,Primefaces,Managed Bean,我有以下Bean: public List<Kunden> autocomplete(String nummer) { List<Kunden> allNummern = kundenDao.alleNummern(); List<Kunden> gefiltert = new ArrayList<Kunden>(); for (Kunden k : allNummern) { String convert

我有以下Bean:

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;

}
公共列表自动完成(字符串numer){
List allnumern=kundenDao.allenumern();
List gefiltert=new ArrayList();
对于(Kunden k:allNummern){
String convert=String.valueOf(k.getkundennumer());
if(转换为startsWith(numer)){
加上(k);
}
其他的
{   
kunde.setkundennumer(Long.parseLong(numer));
kunde.setFirma(“Noch nicht vergeben”);
加上(昆德);
}
}
HashSet HashSet=新的HashSet(allnumern);
gefiltert.clear();
gefiltert.addAll(hashSet);
返回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;

  }
}
公共类昆登道实现可序列化{
私有静态最终长serialVersionUID=1L;
私有EntityManagerFactory emf=持久性
.createEntityManagerFactory(“auditcheck 3.0”);
公共列表alleNummern(){
EntityManager em=emf.createEntityManager();
Query q=em.createQuery(“从Kunden k中选择不同的k”);
List numern=q.getResultList();
返回努曼;
}
}
这是我的视图代码:

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

我的问题是,如果autocomplete方法在列表中找不到某个条目,则使用视图中输入字段的值。
但它不起作用。所有发生的事情是,我可以看到列表中的所有条目,当我开始向其中输入其他数字并希望确认时,该值不会显示。我使用一个HashMap集合(Number-Factory),它显示给用户。

那么为什么要使用
forceSelection=“true”
?此属性强制用户从现有选项中进行选择,如果您将其删除,则用户可以键入任何他想要的内容